This commit is contained in:
zuqijia
2026-06-12 18:10:57 +08:00
parent 81d3c03f09
commit 058720fcb0
63 changed files with 6101 additions and 133 deletions

16
run_sql.bat Normal file
View File

@@ -0,0 +1,16 @@
@echo off
set MYSQL_PATH="C:\Program Files\MySQL\MySQL Server 8.0\bin\mysql.exe"
set SQL_FILE="D:\klp-oa\engineering-management-ruoyi\RuoYi-Vue\sql\ry_engineering.sql"
set DB_NAME=engineering
set DB_USER=root
set DB_PASS=147123369A
echo Executing SQL script...
%MYSQL_PATH% -u %DB_USER% -p%DB_PASS% --default-character-set=utf8mb4 %DB_NAME% < %SQL_FILE%
if %ERRORLEVEL% equ 0 (
echo SQL script executed successfully!
) else (
echo Failed to execute SQL script.
pause
)

View File

@@ -13,8 +13,11 @@ import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
import java.util.HashMap;
import java.util.Map;
import com.ruoyi.common.config.RuoYiConfig;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.common.utils.file.FileUploadUtils;
import com.ruoyi.common.utils.file.FileUtils;
@@ -159,4 +162,18 @@ public class CommonController
log.error("下载文件失败", e);
}
}
/**
* 获取用户权限信息(用于前端控制显示)
*/
@GetMapping("/user/permissions")
public AjaxResult getUserPermissions()
{
Map<String, Object> permissions = new HashMap<>();
permissions.put("hideAmount", SecurityUtils.isHideAmount());
permissions.put("isEngineering", SecurityUtils.isEngineeringRole());
permissions.put("isPurchase", SecurityUtils.isPurchaseRole());
permissions.put("isAdmin", SecurityUtils.isAdmin());
return AjaxResult.success(permissions);
}
}

View File

@@ -179,6 +179,126 @@ CREATE TABLE IF NOT EXISTS engineering_material_out (
CONSTRAINT fk_material_out_construction FOREIGN KEY (construction_id) REFERENCES engineering_construction(construction_id)
);
CREATE TABLE IF NOT EXISTS engineering_material_return (
return_id BIGINT AUTO_INCREMENT PRIMARY KEY,
return_no VARCHAR(50) NOT NULL UNIQUE,
material_id BIGINT NOT NULL,
quantity DECIMAL(18,4) NOT NULL,
return_date DATE,
supplier_id BIGINT,
return_reason VARCHAR(500),
status VARCHAR(20) DEFAULT 'pending',
remark TEXT,
create_by VARCHAR(64) DEFAULT '',
create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
update_by VARCHAR(64) DEFAULT '',
update_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
CONSTRAINT fk_material_return_material FOREIGN KEY (material_id) REFERENCES engineering_material(material_id),
CONSTRAINT fk_material_return_supplier FOREIGN KEY (supplier_id) REFERENCES engineering_supplier(supplier_id)
);
CREATE TABLE IF NOT EXISTS engineering_material_pick (
pick_id BIGINT AUTO_INCREMENT PRIMARY KEY,
pick_no VARCHAR(50) NOT NULL UNIQUE,
material_id BIGINT NOT NULL,
quantity DECIMAL(18,4) NOT NULL,
pick_date DATE,
dept_name VARCHAR(100),
receiver VARCHAR(50),
use_purpose VARCHAR(500),
status VARCHAR(20) DEFAULT 'pending',
remark TEXT,
create_by VARCHAR(64) DEFAULT '',
create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
update_by VARCHAR(64) DEFAULT '',
update_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
CONSTRAINT fk_material_pick_material FOREIGN KEY (material_id) REFERENCES engineering_material(material_id)
);
CREATE TABLE IF NOT EXISTS engineering_material_return_back (
return_back_id BIGINT AUTO_INCREMENT PRIMARY KEY,
return_back_no VARCHAR(50) NOT NULL UNIQUE,
pick_id BIGINT,
material_id BIGINT NOT NULL,
quantity DECIMAL(18,4) NOT NULL,
return_back_date DATE,
status VARCHAR(20) DEFAULT 'pending',
remark TEXT,
create_by VARCHAR(64) DEFAULT '',
create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
update_by VARCHAR(64) DEFAULT '',
update_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
CONSTRAINT fk_material_return_back_material FOREIGN KEY (material_id) REFERENCES engineering_material(material_id),
CONSTRAINT fk_material_return_back_pick FOREIGN KEY (pick_id) REFERENCES engineering_material_pick(pick_id)
);
CREATE TABLE IF NOT EXISTS engineering_material_transfer (
transfer_id BIGINT AUTO_INCREMENT PRIMARY KEY,
transfer_no VARCHAR(50) NOT NULL UNIQUE,
material_id BIGINT NOT NULL,
quantity DECIMAL(18,4) NOT NULL,
from_project VARCHAR(200),
to_project VARCHAR(200),
transfer_date DATE,
transfer_type VARCHAR(20),
status VARCHAR(20) DEFAULT 'pending',
remark TEXT,
create_by VARCHAR(64) DEFAULT '',
create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
update_by VARCHAR(64) DEFAULT '',
update_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
CONSTRAINT fk_material_transfer_material FOREIGN KEY (material_id) REFERENCES engineering_material(material_id)
);
CREATE TABLE IF NOT EXISTS engineering_material_inventory (
inventory_id BIGINT AUTO_INCREMENT PRIMARY KEY,
inventory_no VARCHAR(50) NOT NULL UNIQUE,
inventory_date DATE,
warehouse VARCHAR(200),
inventory_type VARCHAR(20),
status VARCHAR(20) DEFAULT 'pending',
remark TEXT,
create_by VARCHAR(64) DEFAULT '',
create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
update_by VARCHAR(64) DEFAULT '',
update_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
CREATE TABLE IF NOT EXISTS engineering_material_inventory_detail (
detail_id BIGINT AUTO_INCREMENT PRIMARY KEY,
inventory_id BIGINT NOT NULL,
material_id BIGINT NOT NULL,
system_stock DECIMAL(18,4),
actual_stock DECIMAL(18,4),
diff_quantity DECIMAL(18,4),
status VARCHAR(20) DEFAULT 'pending',
remark TEXT,
create_by VARCHAR(64) DEFAULT '',
create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
update_by VARCHAR(64) DEFAULT '',
update_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
CONSTRAINT fk_inventory_detail_inventory FOREIGN KEY (inventory_id) REFERENCES engineering_material_inventory(inventory_id) ON DELETE CASCADE,
CONSTRAINT fk_inventory_detail_material FOREIGN KEY (material_id) REFERENCES engineering_material(material_id)
);
CREATE TABLE IF NOT EXISTS engineering_material_scrap (
scrap_id BIGINT AUTO_INCREMENT PRIMARY KEY,
scrap_no VARCHAR(50) NOT NULL UNIQUE,
material_id BIGINT NOT NULL,
quantity DECIMAL(18,4) NOT NULL,
scrap_type VARCHAR(20),
scrap_date DATE,
reason VARCHAR(500),
handler VARCHAR(50),
status VARCHAR(20) DEFAULT 'pending',
remark TEXT,
create_by VARCHAR(64) DEFAULT '',
create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
update_by VARCHAR(64) DEFAULT '',
update_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
CONSTRAINT fk_material_scrap_material FOREIGN KEY (material_id) REFERENCES engineering_material(material_id)
);
CREATE TABLE IF NOT EXISTS engineering_payment (
payment_id BIGINT AUTO_INCREMENT PRIMARY KEY,
contract_id BIGINT NOT NULL,
@@ -318,9 +438,167 @@ INSERT INTO sys_menu (menu_name, parent_id, order_num, path, component, is_frame
SELECT '物料出库', @materialMenuId, 6, '#', '', 1, 0, 'F', '0', '0', 'system:engineering:material:out:add', '#', 'admin', CURRENT_TIMESTAMP, '', NULL, ''
WHERE NOT EXISTS (SELECT 1 FROM sys_menu WHERE menu_name = '物料出库' AND parent_id = @materialMenuId);
INSERT INTO sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
SELECT '退货单管理', @engineeringMenuId, 5, 'materialReturn', 'engineering/material/return', 1, 0, 'C', '0', '0', 'system:engineering:material:return:list', 'shopping', 'admin', CURRENT_TIMESTAMP, '', NULL, '退货单管理菜单'
WHERE NOT EXISTS (SELECT 1 FROM sys_menu WHERE menu_name = '退货单管理' AND parent_id = @engineeringMenuId);
SET @materialReturnMenuId = (SELECT menu_id FROM sys_menu WHERE menu_name = '退货单管理' AND parent_id = @engineeringMenuId);
INSERT INTO sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
SELECT '退货单查询', @materialReturnMenuId, 1, '#', '', 1, 0, 'F', '0', '0', 'system:engineering:material:return:query', '#', 'admin', CURRENT_TIMESTAMP, '', NULL, ''
WHERE NOT EXISTS (SELECT 1 FROM sys_menu WHERE menu_name = '退货单查询' AND parent_id = @materialReturnMenuId);
INSERT INTO sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
SELECT '退货单新增', @materialReturnMenuId, 2, '#', '', 1, 0, 'F', '0', '0', 'system:engineering:material:return:add', '#', 'admin', CURRENT_TIMESTAMP, '', NULL, ''
WHERE NOT EXISTS (SELECT 1 FROM sys_menu WHERE menu_name = '退货单新增' AND parent_id = @materialReturnMenuId);
INSERT INTO sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
SELECT '退货单修改', @materialReturnMenuId, 3, '#', '', 1, 0, 'F', '0', '0', 'system:engineering:material:return:edit', '#', 'admin', CURRENT_TIMESTAMP, '', NULL, ''
WHERE NOT EXISTS (SELECT 1 FROM sys_menu WHERE menu_name = '退货单修改' AND parent_id = @materialReturnMenuId);
INSERT INTO sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
SELECT '退货单删除', @materialReturnMenuId, 4, '#', '', 1, 0, 'F', '0', '0', 'system:engineering:material:return:remove', '#', 'admin', CURRENT_TIMESTAMP, '', NULL, ''
WHERE NOT EXISTS (SELECT 1 FROM sys_menu WHERE menu_name = '退货单删除' AND parent_id = @materialReturnMenuId);
INSERT INTO sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
SELECT '退货单审批', @materialReturnMenuId, 5, '#', '', 1, 0, 'F', '0', '0', 'system:engineering:material:return:approve', '#', 'admin', CURRENT_TIMESTAMP, '', NULL, ''
WHERE NOT EXISTS (SELECT 1 FROM sys_menu WHERE menu_name = '退货单审批' AND parent_id = @materialReturnMenuId);
INSERT INTO sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
SELECT '领料单管理', @engineeringMenuId, 6, 'materialPick', 'engineering/material/pick', 1, 0, 'C', '0', '0', 'system:engineering:material:pick:list', 'shopping', 'admin', CURRENT_TIMESTAMP, '', NULL, '领料单管理菜单'
WHERE NOT EXISTS (SELECT 1 FROM sys_menu WHERE menu_name = '领料单管理' AND parent_id = @engineeringMenuId);
SET @materialPickMenuId = (SELECT menu_id FROM sys_menu WHERE menu_name = '领料单管理' AND parent_id = @engineeringMenuId);
INSERT INTO sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
SELECT '领料单查询', @materialPickMenuId, 1, '#', '', 1, 0, 'F', '0', '0', 'system:engineering:material:pick:query', '#', 'admin', CURRENT_TIMESTAMP, '', NULL, ''
WHERE NOT EXISTS (SELECT 1 FROM sys_menu WHERE menu_name = '领料单查询' AND parent_id = @materialPickMenuId);
INSERT INTO sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
SELECT '领料单新增', @materialPickMenuId, 2, '#', '', 1, 0, 'F', '0', '0', 'system:engineering:material:pick:add', '#', 'admin', CURRENT_TIMESTAMP, '', NULL, ''
WHERE NOT EXISTS (SELECT 1 FROM sys_menu WHERE menu_name = '领料单新增' AND parent_id = @materialPickMenuId);
INSERT INTO sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
SELECT '领料单修改', @materialPickMenuId, 3, '#', '', 1, 0, 'F', '0', '0', 'system:engineering:material:pick:edit', '#', 'admin', CURRENT_TIMESTAMP, '', NULL, ''
WHERE NOT EXISTS (SELECT 1 FROM sys_menu WHERE menu_name = '领料单修改' AND parent_id = @materialPickMenuId);
INSERT INTO sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
SELECT '领料单删除', @materialPickMenuId, 4, '#', '', 1, 0, 'F', '0', '0', 'system:engineering:material:pick:remove', '#', 'admin', CURRENT_TIMESTAMP, '', NULL, ''
WHERE NOT EXISTS (SELECT 1 FROM sys_menu WHERE menu_name = '领料单删除' AND parent_id = @materialPickMenuId);
INSERT INTO sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
SELECT '领料单审批', @materialPickMenuId, 5, '#', '', 1, 0, 'F', '0', '0', 'system:engineering:material:pick:approve', '#', 'admin', CURRENT_TIMESTAMP, '', NULL, ''
WHERE NOT EXISTS (SELECT 1 FROM sys_menu WHERE menu_name = '领料单审批' AND parent_id = @materialPickMenuId);
INSERT INTO sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
SELECT '领料单发放', @materialPickMenuId, 6, '#', '', 1, 0, 'F', '0', '0', 'system:engineering:material:pick:issue', '#', 'admin', CURRENT_TIMESTAMP, '', NULL, ''
WHERE NOT EXISTS (SELECT 1 FROM sys_menu WHERE menu_name = '领料单发放' AND parent_id = @materialPickMenuId);
INSERT INTO sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
SELECT '还料单管理', @engineeringMenuId, 7, 'materialReturnBack', 'engineering/material/returnBack', 1, 0, 'C', '0', '0', 'system:engineering:material:returnBack:list', 'shopping', 'admin', CURRENT_TIMESTAMP, '', NULL, '还料单管理菜单'
WHERE NOT EXISTS (SELECT 1 FROM sys_menu WHERE menu_name = '还料单管理' AND parent_id = @engineeringMenuId);
SET @materialReturnBackMenuId = (SELECT menu_id FROM sys_menu WHERE menu_name = '还料单管理' AND parent_id = @engineeringMenuId);
INSERT INTO sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
SELECT '还料单查询', @materialReturnBackMenuId, 1, '#', '', 1, 0, 'F', '0', '0', 'system:engineering:material:returnBack:query', '#', 'admin', CURRENT_TIMESTAMP, '', NULL, ''
WHERE NOT EXISTS (SELECT 1 FROM sys_menu WHERE menu_name = '还料单查询' AND parent_id = @materialReturnBackMenuId);
INSERT INTO sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
SELECT '还料单新增', @materialReturnBackMenuId, 2, '#', '', 1, 0, 'F', '0', '0', 'system:engineering:material:returnBack:add', '#', 'admin', CURRENT_TIMESTAMP, '', NULL, ''
WHERE NOT EXISTS (SELECT 1 FROM sys_menu WHERE menu_name = '还料单新增' AND parent_id = @materialReturnBackMenuId);
INSERT INTO sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
SELECT '还料单修改', @materialReturnBackMenuId, 3, '#', '', 1, 0, 'F', '0', '0', 'system:engineering:material:returnBack:edit', '#', 'admin', CURRENT_TIMESTAMP, '', NULL, ''
WHERE NOT EXISTS (SELECT 1 FROM sys_menu WHERE menu_name = '还料单修改' AND parent_id = @materialReturnBackMenuId);
INSERT INTO sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
SELECT '还料单删除', @materialReturnBackMenuId, 4, '#', '', 1, 0, 'F', '0', '0', 'system:engineering:material:returnBack:remove', '#', 'admin', CURRENT_TIMESTAMP, '', NULL, ''
WHERE NOT EXISTS (SELECT 1 FROM sys_menu WHERE menu_name = '还料单删除' AND parent_id = @materialReturnBackMenuId);
INSERT INTO sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
SELECT '还料单审批', @materialReturnBackMenuId, 5, '#', '', 1, 0, 'F', '0', '0', 'system:engineering:material:returnBack:approve', '#', 'admin', CURRENT_TIMESTAMP, '', NULL, ''
WHERE NOT EXISTS (SELECT 1 FROM sys_menu WHERE menu_name = '还料单审批' AND parent_id = @materialReturnBackMenuId);
INSERT INTO sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
SELECT '调拨单管理', @engineeringMenuId, 8, 'materialTransfer', 'engineering/material/transfer', 1, 0, 'C', '0', '0', 'system:engineering:material:transfer:list', 'shopping', 'admin', CURRENT_TIMESTAMP, '', NULL, '调拨单管理菜单'
WHERE NOT EXISTS (SELECT 1 FROM sys_menu WHERE menu_name = '调拨单管理' AND parent_id = @engineeringMenuId);
SET @materialTransferMenuId = (SELECT menu_id FROM sys_menu WHERE menu_name = '调拨单管理' AND parent_id = @engineeringMenuId);
INSERT INTO sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
SELECT '调拨单查询', @materialTransferMenuId, 1, '#', '', 1, 0, 'F', '0', '0', 'system:engineering:material:transfer:query', '#', 'admin', CURRENT_TIMESTAMP, '', NULL, ''
WHERE NOT EXISTS (SELECT 1 FROM sys_menu WHERE menu_name = '调拨单查询' AND parent_id = @materialTransferMenuId);
INSERT INTO sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
SELECT '调拨单新增', @materialTransferMenuId, 2, '#', '', 1, 0, 'F', '0', '0', 'system:engineering:material:transfer:add', '#', 'admin', CURRENT_TIMESTAMP, '', NULL, ''
WHERE NOT EXISTS (SELECT 1 FROM sys_menu WHERE menu_name = '调拨单新增' AND parent_id = @materialTransferMenuId);
INSERT INTO sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
SELECT '调拨单修改', @materialTransferMenuId, 3, '#', '', 1, 0, 'F', '0', '0', 'system:engineering:material:transfer:edit', '#', 'admin', CURRENT_TIMESTAMP, '', NULL, ''
WHERE NOT EXISTS (SELECT 1 FROM sys_menu WHERE menu_name = '调拨单修改' AND parent_id = @materialTransferMenuId);
INSERT INTO sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
SELECT '调拨单删除', @materialTransferMenuId, 4, '#', '', 1, 0, 'F', '0', '0', 'system:engineering:material:transfer:remove', '#', 'admin', CURRENT_TIMESTAMP, '', NULL, ''
WHERE NOT EXISTS (SELECT 1 FROM sys_menu WHERE menu_name = '调拨单删除' AND parent_id = @materialTransferMenuId);
INSERT INTO sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
SELECT '调拨单审批', @materialTransferMenuId, 5, '#', '', 1, 0, 'F', '0', '0', 'system:engineering:material:transfer:approve', '#', 'admin', CURRENT_TIMESTAMP, '', NULL, ''
WHERE NOT EXISTS (SELECT 1 FROM sys_menu WHERE menu_name = '调拨单审批' AND parent_id = @materialTransferMenuId);
INSERT INTO sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
SELECT '盘点单管理', @engineeringMenuId, 9, 'materialInventory', 'engineering/material/inventory', 1, 0, 'C', '0', '0', 'system:engineering:material:inventory:list', 'shopping', 'admin', CURRENT_TIMESTAMP, '', NULL, '盘点单管理菜单'
WHERE NOT EXISTS (SELECT 1 FROM sys_menu WHERE menu_name = '盘点单管理' AND parent_id = @engineeringMenuId);
SET @materialInventoryMenuId = (SELECT menu_id FROM sys_menu WHERE menu_name = '盘点单管理' AND parent_id = @engineeringMenuId);
INSERT INTO sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
SELECT '盘点单查询', @materialInventoryMenuId, 1, '#', '', 1, 0, 'F', '0', '0', 'system:engineering:material:inventory:query', '#', 'admin', CURRENT_TIMESTAMP, '', NULL, ''
WHERE NOT EXISTS (SELECT 1 FROM sys_menu WHERE menu_name = '盘点单查询' AND parent_id = @materialInventoryMenuId);
INSERT INTO sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
SELECT '盘点单新增', @materialInventoryMenuId, 2, '#', '', 1, 0, 'F', '0', '0', 'system:engineering:material:inventory:add', '#', 'admin', CURRENT_TIMESTAMP, '', NULL, ''
WHERE NOT EXISTS (SELECT 1 FROM sys_menu WHERE menu_name = '盘点单新增' AND parent_id = @materialInventoryMenuId);
INSERT INTO sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
SELECT '盘点单修改', @materialInventoryMenuId, 3, '#', '', 1, 0, 'F', '0', '0', 'system:engineering:material:inventory:edit', '#', 'admin', CURRENT_TIMESTAMP, '', NULL, ''
WHERE NOT EXISTS (SELECT 1 FROM sys_menu WHERE menu_name = '盘点单修改' AND parent_id = @materialInventoryMenuId);
INSERT INTO sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
SELECT '盘点单删除', @materialInventoryMenuId, 4, '#', '', 1, 0, 'F', '0', '0', 'system:engineering:material:inventory:remove', '#', 'admin', CURRENT_TIMESTAMP, '', NULL, ''
WHERE NOT EXISTS (SELECT 1 FROM sys_menu WHERE menu_name = '盘点单删除' AND parent_id = @materialInventoryMenuId);
INSERT INTO sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
SELECT '盘点单完成', @materialInventoryMenuId, 5, '#', '', 1, 0, 'F', '0', '0', 'system:engineering:material:inventory:complete', '#', 'admin', CURRENT_TIMESTAMP, '', NULL, ''
WHERE NOT EXISTS (SELECT 1 FROM sys_menu WHERE menu_name = '盘点单完成' AND parent_id = @materialInventoryMenuId);
INSERT INTO sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
SELECT '盘点单调整', @materialInventoryMenuId, 6, '#', '', 1, 0, 'F', '0', '0', 'system:engineering:material:inventory:adjust', '#', 'admin', CURRENT_TIMESTAMP, '', NULL, ''
WHERE NOT EXISTS (SELECT 1 FROM sys_menu WHERE menu_name = '盘点单调整' AND parent_id = @materialInventoryMenuId);
INSERT INTO sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
SELECT '报损报溢管理', @engineeringMenuId, 10, 'materialScrap', 'engineering/material/scrap', 1, 0, 'C', '0', '0', 'system:engineering:material:scrap:list', 'shopping', 'admin', CURRENT_TIMESTAMP, '', NULL, '报损报溢管理菜单'
WHERE NOT EXISTS (SELECT 1 FROM sys_menu WHERE menu_name = '报损报溢管理' AND parent_id = @engineeringMenuId);
SET @materialScrapMenuId = (SELECT menu_id FROM sys_menu WHERE menu_name = '报损报溢管理' AND parent_id = @engineeringMenuId);
INSERT INTO sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
SELECT '报损报溢查询', @materialScrapMenuId, 1, '#', '', 1, 0, 'F', '0', '0', 'system:engineering:material:scrap:query', '#', 'admin', CURRENT_TIMESTAMP, '', NULL, ''
WHERE NOT EXISTS (SELECT 1 FROM sys_menu WHERE menu_name = '报损报溢查询' AND parent_id = @materialScrapMenuId);
INSERT INTO sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
SELECT '报损报溢新增', @materialScrapMenuId, 2, '#', '', 1, 0, 'F', '0', '0', 'system:engineering:material:scrap:add', '#', 'admin', CURRENT_TIMESTAMP, '', NULL, ''
WHERE NOT EXISTS (SELECT 1 FROM sys_menu WHERE menu_name = '报损报溢新增' AND parent_id = @materialScrapMenuId);
INSERT INTO sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
SELECT '报损报溢修改', @materialScrapMenuId, 3, '#', '', 1, 0, 'F', '0', '0', 'system:engineering:material:scrap:edit', '#', 'admin', CURRENT_TIMESTAMP, '', NULL, ''
WHERE NOT EXISTS (SELECT 1 FROM sys_menu WHERE menu_name = '报损报溢修改' AND parent_id = @materialScrapMenuId);
INSERT INTO sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
SELECT '报损报溢删除', @materialScrapMenuId, 4, '#', '', 1, 0, 'F', '0', '0', 'system:engineering:material:scrap:remove', '#', 'admin', CURRENT_TIMESTAMP, '', NULL, ''
WHERE NOT EXISTS (SELECT 1 FROM sys_menu WHERE menu_name = '报损报溢删除' AND parent_id = @materialScrapMenuId);
INSERT INTO sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
SELECT '报损报溢审批', @materialScrapMenuId, 5, '#', '', 1, 0, 'F', '0', '0', 'system:engineering:material:scrap:approve', '#', 'admin', CURRENT_TIMESTAMP, '', NULL, ''
WHERE NOT EXISTS (SELECT 1 FROM sys_menu WHERE menu_name = '报损报溢审批' AND parent_id = @materialScrapMenuId);
-- 付款管理二级菜单
INSERT INTO sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
SELECT '付款管理', @engineeringMenuId, 5, 'payment', 'engineering/payment/index', 1, 0, 'C', '0', '0', 'system:engineering:payment:list', 'money', 'admin', CURRENT_TIMESTAMP, '', NULL, '付款管理菜单'
SELECT '付款管理', @engineeringMenuId, 11, 'payment', 'engineering/payment/index', 1, 0, 'C', '0', '0', 'system:engineering:payment:list', 'money', 'admin', CURRENT_TIMESTAMP, '', NULL, '付款管理菜单'
WHERE NOT EXISTS (SELECT 1 FROM sys_menu WHERE menu_name = '付款管理' AND parent_id = @engineeringMenuId);
-- 付款管理按钮

View File

@@ -185,4 +185,37 @@ public class SecurityUtils
.anyMatch(x -> Constants.SUPER_ADMIN.equals(x) || PatternMatchUtils.simpleMatch(x, role));
}
/**
* 判断用户是否需要隐藏金额字段
* 工程角色(engineering)和采购角色(purchase)需要隐藏金额字段
*
* @return 是否需要隐藏金额字段
*/
public static boolean isHideAmount()
{
List<SysRole> roleList = getLoginUser().getUser().getRoles();
Collection<String> roles = roleList.stream().map(SysRole::getRoleKey).collect(Collectors.toSet());
return roles.contains("engineering") || roles.contains("purchase");
}
/**
* 判断用户是否为工程角色
*
* @return 是否为工程角色
*/
public static boolean isEngineeringRole()
{
return hasRole("engineering");
}
/**
* 判断用户是否为采购角色
*
* @return 是否为采购角色
*/
public static boolean isPurchaseRole()
{
return hasRole("purchase");
}
}

View File

@@ -24,6 +24,7 @@ public class ConstructionController extends BaseController {
@PreAuthorize("@ss.hasPermi('system:engineering:construction:list')")
@GetMapping("/list")
public TableDataInfo list(Construction construction) {
startPage();
return constructionService.selectConstructionList(construction);
}

View File

@@ -25,6 +25,7 @@ public class ContractController extends BaseController {
@PreAuthorize("@ss.hasPermi('system:engineering:contract:list')")
@GetMapping("/list")
public TableDataInfo list(Contract contract) {
startPage();
return contractService.selectContractList(contract);
}

View File

@@ -8,6 +8,13 @@ import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.system.domain.engineering.Material;
import com.ruoyi.system.domain.engineering.MaterialIn;
import com.ruoyi.system.domain.engineering.MaterialOut;
import com.ruoyi.system.domain.engineering.MaterialReturn;
import com.ruoyi.system.domain.engineering.MaterialPick;
import com.ruoyi.system.domain.engineering.MaterialReturnBack;
import com.ruoyi.system.domain.engineering.MaterialTransfer;
import com.ruoyi.system.domain.engineering.MaterialInventory;
import com.ruoyi.system.domain.engineering.MaterialInventoryDetail;
import com.ruoyi.system.domain.engineering.MaterialScrap;
import com.ruoyi.system.service.engineering.IMaterialService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
@@ -25,6 +32,7 @@ public class MaterialController extends BaseController {
@PreAuthorize("@ss.hasPermi('system:engineering:material:list')")
@GetMapping("/list")
public TableDataInfo list(Material material) {
startPage();
return materialService.selectMaterialList(material);
}
@@ -91,6 +99,7 @@ public class MaterialController extends BaseController {
@PreAuthorize("@ss.hasPermi('system:engineering:material:in:list')")
@GetMapping("/in/list")
public TableDataInfo listMaterialIn(MaterialIn materialIn) {
startPage();
return materialService.selectMaterialInList(materialIn);
}
@@ -131,6 +140,7 @@ public class MaterialController extends BaseController {
@PreAuthorize("@ss.hasPermi('system:engineering:material:out:list')")
@GetMapping("/out/list")
public TableDataInfo listMaterialOut(MaterialOut materialOut) {
startPage();
return materialService.selectMaterialOutList(materialOut);
}
@@ -139,4 +149,291 @@ public class MaterialController extends BaseController {
public AjaxResult getMaterialOut(@PathVariable Long outId) {
return AjaxResult.success(materialService.selectMaterialOutById(outId));
}
@PreAuthorize("@ss.hasPermi('system:engineering:material:return:list')")
@GetMapping("/return/list")
public TableDataInfo listMaterialReturn(MaterialReturn materialReturn) {
startPage();
return materialService.selectMaterialReturnList(materialReturn);
}
@PreAuthorize("@ss.hasPermi('system:engineering:material:return:query')")
@GetMapping("/return/{returnId}")
public AjaxResult getMaterialReturn(@PathVariable Long returnId) {
return AjaxResult.success(materialService.selectMaterialReturnById(returnId));
}
@PreAuthorize("@ss.hasPermi('system:engineering:material:return:add')")
@Log(title = "退货单管理", businessType = BusinessType.INSERT)
@PostMapping("/return")
public AjaxResult addMaterialReturn(@RequestBody MaterialReturn materialReturn) {
return toAjax(materialService.insertMaterialReturn(materialReturn));
}
@PreAuthorize("@ss.hasPermi('system:engineering:material:return:edit')")
@Log(title = "退货单管理", businessType = BusinessType.UPDATE)
@PutMapping("/return")
public AjaxResult updateMaterialReturn(@RequestBody MaterialReturn materialReturn) {
return toAjax(materialService.updateMaterialReturn(materialReturn));
}
@PreAuthorize("@ss.hasPermi('system:engineering:material:return:approve')")
@Log(title = "退货单审批", businessType = BusinessType.UPDATE)
@PutMapping("/return/approve/{returnId}")
public AjaxResult approveMaterialReturn(@PathVariable Long returnId) {
return toAjax(materialService.approveMaterialReturn(returnId));
}
@PreAuthorize("@ss.hasPermi('system:engineering:material:return:remove')")
@Log(title = "退货单删除", businessType = BusinessType.DELETE)
@DeleteMapping("/return/{returnId}")
public AjaxResult deleteMaterialReturn(@PathVariable Long returnId) {
return toAjax(materialService.deleteMaterialReturnById(returnId));
}
@PreAuthorize("@ss.hasPermi('system:engineering:material:pick:list')")
@GetMapping("/pick/list")
public TableDataInfo listMaterialPick(MaterialPick materialPick) {
startPage();
return materialService.selectMaterialPickList(materialPick);
}
@PreAuthorize("@ss.hasPermi('system:engineering:material:pick:query')")
@GetMapping("/pick/{pickId}")
public AjaxResult getMaterialPick(@PathVariable Long pickId) {
return AjaxResult.success(materialService.selectMaterialPickById(pickId));
}
@PreAuthorize("@ss.hasPermi('system:engineering:material:pick:add')")
@Log(title = "领料单管理", businessType = BusinessType.INSERT)
@PostMapping("/pick")
public AjaxResult addMaterialPick(@RequestBody MaterialPick materialPick) {
return toAjax(materialService.insertMaterialPick(materialPick));
}
@PreAuthorize("@ss.hasPermi('system:engineering:material:pick:edit')")
@Log(title = "领料单管理", businessType = BusinessType.UPDATE)
@PutMapping("/pick")
public AjaxResult updateMaterialPick(@RequestBody MaterialPick materialPick) {
return toAjax(materialService.updateMaterialPick(materialPick));
}
@PreAuthorize("@ss.hasPermi('system:engineering:material:pick:approve')")
@Log(title = "领料单审批", businessType = BusinessType.UPDATE)
@PutMapping("/pick/approve/{pickId}")
public AjaxResult approveMaterialPick(@PathVariable Long pickId) {
return toAjax(materialService.approveMaterialPick(pickId));
}
@PreAuthorize("@ss.hasPermi('system:engineering:material:pick:issue')")
@Log(title = "领料单发放", businessType = BusinessType.UPDATE)
@PutMapping("/pick/issue/{pickId}")
public AjaxResult issueMaterialPick(@PathVariable Long pickId) {
return toAjax(materialService.issueMaterialPick(pickId));
}
@PreAuthorize("@ss.hasPermi('system:engineering:material:pick:remove')")
@Log(title = "领料单删除", businessType = BusinessType.DELETE)
@DeleteMapping("/pick/{pickId}")
public AjaxResult deleteMaterialPick(@PathVariable Long pickId) {
return toAjax(materialService.deleteMaterialPickById(pickId));
}
@PreAuthorize("@ss.hasPermi('system:engineering:material:returnBack:list')")
@GetMapping("/returnBack/list")
public TableDataInfo listMaterialReturnBack(MaterialReturnBack materialReturnBack) {
startPage();
return materialService.selectMaterialReturnBackList(materialReturnBack);
}
@PreAuthorize("@ss.hasPermi('system:engineering:material:returnBack:query')")
@GetMapping("/returnBack/{returnBackId}")
public AjaxResult getMaterialReturnBack(@PathVariable Long returnBackId) {
return AjaxResult.success(materialService.selectMaterialReturnBackById(returnBackId));
}
@PreAuthorize("@ss.hasPermi('system:engineering:material:returnBack:add')")
@Log(title = "还料单管理", businessType = BusinessType.INSERT)
@PostMapping("/returnBack")
public AjaxResult addMaterialReturnBack(@RequestBody MaterialReturnBack materialReturnBack) {
return toAjax(materialService.insertMaterialReturnBack(materialReturnBack));
}
@PreAuthorize("@ss.hasPermi('system:engineering:material:returnBack:edit')")
@Log(title = "还料单管理", businessType = BusinessType.UPDATE)
@PutMapping("/returnBack")
public AjaxResult updateMaterialReturnBack(@RequestBody MaterialReturnBack materialReturnBack) {
return toAjax(materialService.updateMaterialReturnBack(materialReturnBack));
}
@PreAuthorize("@ss.hasPermi('system:engineering:material:returnBack:approve')")
@Log(title = "还料单审批", businessType = BusinessType.UPDATE)
@PutMapping("/returnBack/approve/{returnBackId}")
public AjaxResult approveMaterialReturnBack(@PathVariable Long returnBackId) {
return toAjax(materialService.approveMaterialReturnBack(returnBackId));
}
@PreAuthorize("@ss.hasPermi('system:engineering:material:returnBack:remove')")
@Log(title = "还料单删除", businessType = BusinessType.DELETE)
@DeleteMapping("/returnBack/{returnBackId}")
public AjaxResult deleteMaterialReturnBack(@PathVariable Long returnBackId) {
return toAjax(materialService.deleteMaterialReturnBackById(returnBackId));
}
@PreAuthorize("@ss.hasPermi('system:engineering:material:transfer:list')")
@GetMapping("/transfer/list")
public TableDataInfo listMaterialTransfer(MaterialTransfer materialTransfer) {
startPage();
return materialService.selectMaterialTransferList(materialTransfer);
}
@PreAuthorize("@ss.hasPermi('system:engineering:material:transfer:query')")
@GetMapping("/transfer/{transferId}")
public AjaxResult getMaterialTransfer(@PathVariable Long transferId) {
return AjaxResult.success(materialService.selectMaterialTransferById(transferId));
}
@PreAuthorize("@ss.hasPermi('system:engineering:material:transfer:add')")
@Log(title = "调拨单管理", businessType = BusinessType.INSERT)
@PostMapping("/transfer")
public AjaxResult addMaterialTransfer(@RequestBody MaterialTransfer materialTransfer) {
return toAjax(materialService.insertMaterialTransfer(materialTransfer));
}
@PreAuthorize("@ss.hasPermi('system:engineering:material:transfer:edit')")
@Log(title = "调拨单管理", businessType = BusinessType.UPDATE)
@PutMapping("/transfer")
public AjaxResult updateMaterialTransfer(@RequestBody MaterialTransfer materialTransfer) {
return toAjax(materialService.updateMaterialTransfer(materialTransfer));
}
@PreAuthorize("@ss.hasPermi('system:engineering:material:transfer:approve')")
@Log(title = "调拨单审批", businessType = BusinessType.UPDATE)
@PutMapping("/transfer/approve/{transferId}")
public AjaxResult approveMaterialTransfer(@PathVariable Long transferId) {
return toAjax(materialService.approveMaterialTransfer(transferId));
}
@PreAuthorize("@ss.hasPermi('system:engineering:material:transfer:remove')")
@Log(title = "调拨单删除", businessType = BusinessType.DELETE)
@DeleteMapping("/transfer/{transferId}")
public AjaxResult deleteMaterialTransfer(@PathVariable Long transferId) {
return toAjax(materialService.deleteMaterialTransferById(transferId));
}
@PreAuthorize("@ss.hasPermi('system:engineering:material:inventory:list')")
@GetMapping("/inventory/list")
public TableDataInfo listMaterialInventory(MaterialInventory materialInventory) {
startPage();
return materialService.selectMaterialInventoryList(materialInventory);
}
@PreAuthorize("@ss.hasPermi('system:engineering:material:inventory:query')")
@GetMapping("/inventory/{inventoryId}")
public AjaxResult getMaterialInventory(@PathVariable Long inventoryId) {
return AjaxResult.success(materialService.selectMaterialInventoryById(inventoryId));
}
@PreAuthorize("@ss.hasPermi('system:engineering:material:inventory:add')")
@Log(title = "盘点单管理", businessType = BusinessType.INSERT)
@PostMapping("/inventory")
public AjaxResult addMaterialInventory(@RequestBody MaterialInventory materialInventory) {
return toAjax(materialService.insertMaterialInventory(materialInventory));
}
@PreAuthorize("@ss.hasPermi('system:engineering:material:inventory:edit')")
@Log(title = "盘点单管理", businessType = BusinessType.UPDATE)
@PutMapping("/inventory")
public AjaxResult updateMaterialInventory(@RequestBody MaterialInventory materialInventory) {
return toAjax(materialService.updateMaterialInventory(materialInventory));
}
@PreAuthorize("@ss.hasPermi('system:engineering:material:inventory:complete')")
@Log(title = "盘点单完成", businessType = BusinessType.UPDATE)
@PutMapping("/inventory/complete/{inventoryId}")
public AjaxResult completeMaterialInventory(@PathVariable Long inventoryId) {
return toAjax(materialService.completeMaterialInventory(inventoryId));
}
@PreAuthorize("@ss.hasPermi('system:engineering:material:inventory:adjust')")
@Log(title = "盘点单调整", businessType = BusinessType.UPDATE)
@PutMapping("/inventory/adjust/{inventoryId}")
public AjaxResult adjustMaterialInventory(@PathVariable Long inventoryId) {
return toAjax(materialService.adjustMaterialInventory(inventoryId));
}
@PreAuthorize("@ss.hasPermi('system:engineering:material:inventory:remove')")
@Log(title = "盘点单删除", businessType = BusinessType.DELETE)
@DeleteMapping("/inventory/{inventoryId}")
public AjaxResult deleteMaterialInventory(@PathVariable Long inventoryId) {
return toAjax(materialService.deleteMaterialInventoryById(inventoryId));
}
@PreAuthorize("@ss.hasPermi('system:engineering:material:inventory:detail:list')")
@GetMapping("/inventory/detail/{inventoryId}")
public AjaxResult getMaterialInventoryDetail(@PathVariable Long inventoryId) {
return AjaxResult.success(materialService.selectMaterialInventoryDetailList(inventoryId));
}
@PreAuthorize("@ss.hasPermi('system:engineering:material:inventory:detail:add')")
@Log(title = "盘点明细管理", businessType = BusinessType.INSERT)
@PostMapping("/inventory/detail")
public AjaxResult addMaterialInventoryDetail(@RequestBody MaterialInventoryDetail detail) {
return toAjax(materialService.insertMaterialInventoryDetail(detail));
}
@PreAuthorize("@ss.hasPermi('system:engineering:material:inventory:detail:edit')")
@Log(title = "盘点明细管理", businessType = BusinessType.UPDATE)
@PutMapping("/inventory/detail")
public AjaxResult updateMaterialInventoryDetail(@RequestBody MaterialInventoryDetail detail) {
return toAjax(materialService.updateMaterialInventoryDetail(detail));
}
@PreAuthorize("@ss.hasPermi('system:engineering:material:inventory:detail:adjust')")
@Log(title = "盘点明细调整", businessType = BusinessType.UPDATE)
@PutMapping("/inventory/detail/adjust/{detailId}")
public AjaxResult adjustMaterialInventoryDetail(@PathVariable Long detailId) {
return toAjax(materialService.adjustMaterialInventoryDetail(detailId));
}
@PreAuthorize("@ss.hasPermi('system:engineering:material:scrap:list')")
@GetMapping("/scrap/list")
public TableDataInfo listMaterialScrap(MaterialScrap materialScrap) {
startPage();
return materialService.selectMaterialScrapList(materialScrap);
}
@PreAuthorize("@ss.hasPermi('system:engineering:material:scrap:query')")
@GetMapping("/scrap/{scrapId}")
public AjaxResult getMaterialScrap(@PathVariable Long scrapId) {
return AjaxResult.success(materialService.selectMaterialScrapById(scrapId));
}
@PreAuthorize("@ss.hasPermi('system:engineering:material:scrap:add')")
@Log(title = "报损报溢管理", businessType = BusinessType.INSERT)
@PostMapping("/scrap")
public AjaxResult addMaterialScrap(@RequestBody MaterialScrap materialScrap) {
return toAjax(materialService.insertMaterialScrap(materialScrap));
}
@PreAuthorize("@ss.hasPermi('system:engineering:material:scrap:edit')")
@Log(title = "报损报溢管理", businessType = BusinessType.UPDATE)
@PutMapping("/scrap")
public AjaxResult updateMaterialScrap(@RequestBody MaterialScrap materialScrap) {
return toAjax(materialService.updateMaterialScrap(materialScrap));
}
@PreAuthorize("@ss.hasPermi('system:engineering:material:scrap:approve')")
@Log(title = "报损报溢审批", businessType = BusinessType.UPDATE)
@PutMapping("/scrap/approve/{scrapId}")
public AjaxResult approveMaterialScrap(@PathVariable Long scrapId) {
return toAjax(materialService.approveMaterialScrap(scrapId));
}
@PreAuthorize("@ss.hasPermi('system:engineering:material:scrap:remove')")
@Log(title = "报损报溢删除", businessType = BusinessType.DELETE)
@DeleteMapping("/scrap/{scrapId}")
public AjaxResult deleteMaterialScrap(@PathVariable Long scrapId) {
return toAjax(materialService.deleteMaterialScrapById(scrapId));
}
}

View File

@@ -23,6 +23,7 @@ public class PaymentController extends BaseController {
@PreAuthorize("@ss.hasPermi('system:engineering:payment:list')")
@GetMapping("/list")
public TableDataInfo list(Payment payment) {
startPage();
return paymentService.selectPaymentList(payment);
}

View File

@@ -25,6 +25,7 @@ public class SupplierController extends BaseController {
@PreAuthorize("@ss.hasPermi('system:engineering:supplier:list')")
@GetMapping("/list")
public TableDataInfo list(Supplier supplier) {
startPage();
return supplierService.selectSupplierList(supplier);
}

View File

@@ -30,7 +30,7 @@ public class Construction extends BaseEntity {
@Excel(name = "阶段编码")
private String phaseCode;
private Long parentPhaseId;
private Long parentId;
private String constructionContent;
@@ -133,12 +133,12 @@ public class Construction extends BaseEntity {
this.phaseCode = phaseCode;
}
public Long getParentPhaseId() {
return parentPhaseId;
public Long getParentId() {
return parentId;
}
public void setParentPhaseId(Long parentPhaseId) {
this.parentPhaseId = parentPhaseId;
public void setParentId(Long parentId) {
this.parentId = parentId;
}
public String getConstructionContent() {
@@ -346,6 +346,10 @@ public class Construction extends BaseEntity {
.toString();
}
private boolean getParentPhaseId() {
return false;
}
private Integer delFlag;
public Integer getDelFlag() {

View File

@@ -29,7 +29,7 @@ public class Material extends BaseEntity {
private String materialType;
@Excel(name = "物料分类")
private String materialCategory;
private String category;
@Size(max = 200, message = "规格型号长度不能超过200个字符")
@Excel(name = "规格型号")
@@ -123,12 +123,12 @@ public class Material extends BaseEntity {
this.materialType = materialType;
}
public String getMaterialCategory() {
return materialCategory;
public String getCategory() {
return category;
}
public void setMaterialCategory(String materialCategory) {
this.materialCategory = materialCategory;
public void setCategory(String category) {
this.category = category;
}
public String getSpecification() {
@@ -317,6 +317,10 @@ public class Material extends BaseEntity {
.toString();
}
private boolean getMaterialCategory() {
return false;
}
private Integer delFlag;
public Integer getDelFlag() {

View File

@@ -59,6 +59,14 @@ public class MaterialIn extends BaseEntity {
@Excel(name = "状态", readConverterExp = "pending=待审核,approved=已审核,canceled=已取消")
private String status;
private Long contractId;
@Excel(name = "合同编号")
private String contractNo;
@Excel(name = "合同名称")
private String contractName;
private String remark;
public Long getInId() {
@@ -181,6 +189,30 @@ public class MaterialIn extends BaseEntity {
this.status = status;
}
public Long getContractId() {
return contractId;
}
public void setContractId(Long contractId) {
this.contractId = contractId;
}
public String getContractNo() {
return contractNo;
}
public void setContractNo(String contractNo) {
this.contractNo = contractNo;
}
public String getContractName() {
return contractName;
}
public void setContractName(String contractName) {
this.contractName = contractName;
}
public String getRemark() {
return remark;
}
@@ -207,6 +239,9 @@ public class MaterialIn extends BaseEntity {
.append("warehouse", getWarehouse())
.append("location", getLocation())
.append("status", getStatus())
.append("contractId", getContractId())
.append("contractNo", getContractNo())
.append("contractName", getContractName())
.append("remark", getRemark())
.append("createBy", getCreateBy())
.append("createTime", getCreateTime())

View File

@@ -0,0 +1,142 @@
package com.ruoyi.system.domain.engineering;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import java.math.BigDecimal;
import java.util.Date;
public class MaterialInventory extends BaseEntity {
private static final long serialVersionUID = 1L;
private Long inventoryId;
@Excel(name = "盘点单号")
private String inventoryNo;
@Excel(name = "盘点日期", width = 30, dateFormat = "yyyy-MM-dd")
private Date inventoryDate;
@Excel(name = "仓库")
private String warehouse;
@Excel(name = "盘点类型", readConverterExp = "full=全盘,partial=抽盘")
private String inventoryType;
@Excel(name = "状态", readConverterExp = "pending=待盘点,in_progress=盘点中,completed=已完成,adjusted=已调整")
private String status;
@Excel(name = "盘点人员")
private String inventoryPerson;
@Excel(name = "差异数量")
private BigDecimal diffQuantity;
@Excel(name = "差异金额")
private BigDecimal diffAmount;
@Excel(name = "备注")
private String remark;
public Long getInventoryId() {
return inventoryId;
}
public void setInventoryId(Long inventoryId) {
this.inventoryId = inventoryId;
}
public String getInventoryNo() {
return inventoryNo;
}
public void setInventoryNo(String inventoryNo) {
this.inventoryNo = inventoryNo;
}
public Date getInventoryDate() {
return inventoryDate;
}
public void setInventoryDate(Date inventoryDate) {
this.inventoryDate = inventoryDate;
}
public String getWarehouse() {
return warehouse;
}
public void setWarehouse(String warehouse) {
this.warehouse = warehouse;
}
public String getInventoryType() {
return inventoryType;
}
public void setInventoryType(String inventoryType) {
this.inventoryType = inventoryType;
}
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
public String getInventoryPerson() {
return inventoryPerson;
}
public void setInventoryPerson(String inventoryPerson) {
this.inventoryPerson = inventoryPerson;
}
public BigDecimal getDiffQuantity() {
return diffQuantity;
}
public void setDiffQuantity(BigDecimal diffQuantity) {
this.diffQuantity = diffQuantity;
}
public BigDecimal getDiffAmount() {
return diffAmount;
}
public void setDiffAmount(BigDecimal diffAmount) {
this.diffAmount = diffAmount;
}
public String getRemark() {
return remark;
}
public void setRemark(String remark) {
this.remark = remark;
}
@Override
public String toString() {
return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
.append("inventoryId", getInventoryId())
.append("inventoryNo", getInventoryNo())
.append("inventoryDate", getInventoryDate())
.append("warehouse", getWarehouse())
.append("inventoryType", getInventoryType())
.append("status", getStatus())
.append("inventoryPerson", getInventoryPerson())
.append("diffQuantity", getDiffQuantity())
.append("diffAmount", getDiffAmount())
.append("remark", getRemark())
.append("createBy", getCreateBy())
.append("createTime", getCreateTime())
.append("updateBy", getUpdateBy())
.append("updateTime", getUpdateTime())
.toString();
}
}

View File

@@ -0,0 +1,171 @@
package com.ruoyi.system.domain.engineering;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import java.math.BigDecimal;
public class MaterialInventoryDetail extends BaseEntity {
private static final long serialVersionUID = 1L;
private Long detailId;
private Long inventoryId;
private Long materialId;
@Excel(name = "物料编码")
private String materialCode;
@Excel(name = "物料名称")
private String materialName;
@Excel(name = "规格型号")
private String specification;
@Excel(name = "计量单位")
private String unit;
@Excel(name = "系统库存")
private BigDecimal systemStock;
@Excel(name = "实际库存")
private BigDecimal actualStock;
@Excel(name = "差异数量")
private BigDecimal diffQuantity;
@Excel(name = "差异原因")
private String diffReason;
@Excel(name = "处理状态", readConverterExp = "pending=待处理,adjusted=已调整")
private String status;
@Excel(name = "备注")
private String remark;
public Long getDetailId() {
return detailId;
}
public void setDetailId(Long detailId) {
this.detailId = detailId;
}
public Long getInventoryId() {
return inventoryId;
}
public void setInventoryId(Long inventoryId) {
this.inventoryId = inventoryId;
}
public Long getMaterialId() {
return materialId;
}
public void setMaterialId(Long materialId) {
this.materialId = materialId;
}
public String getMaterialCode() {
return materialCode;
}
public void setMaterialCode(String materialCode) {
this.materialCode = materialCode;
}
public String getMaterialName() {
return materialName;
}
public void setMaterialName(String materialName) {
this.materialName = materialName;
}
public String getSpecification() {
return specification;
}
public void setSpecification(String specification) {
this.specification = specification;
}
public String getUnit() {
return unit;
}
public void setUnit(String unit) {
this.unit = unit;
}
public BigDecimal getSystemStock() {
return systemStock;
}
public void setSystemStock(BigDecimal systemStock) {
this.systemStock = systemStock;
}
public BigDecimal getActualStock() {
return actualStock;
}
public void setActualStock(BigDecimal actualStock) {
this.actualStock = actualStock;
}
public BigDecimal getDiffQuantity() {
return diffQuantity;
}
public void setDiffQuantity(BigDecimal diffQuantity) {
this.diffQuantity = diffQuantity;
}
public String getDiffReason() {
return diffReason;
}
public void setDiffReason(String diffReason) {
this.diffReason = diffReason;
}
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
public String getRemark() {
return remark;
}
public void setRemark(String remark) {
this.remark = remark;
}
@Override
public String toString() {
return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
.append("detailId", getDetailId())
.append("inventoryId", getInventoryId())
.append("materialId", getMaterialId())
.append("materialCode", getMaterialCode())
.append("materialName", getMaterialName())
.append("specification", getSpecification())
.append("unit", getUnit())
.append("systemStock", getSystemStock())
.append("actualStock", getActualStock())
.append("diffQuantity", getDiffQuantity())
.append("diffReason", getDiffReason())
.append("status", getStatus())
.append("remark", getRemark())
.toString();
}
}

View File

@@ -62,6 +62,16 @@ public class MaterialOut extends BaseEntity {
@Excel(name = "状态", readConverterExp = "pending=待审核,approved=已审核,canceled=已取消")
private String status;
private Long constructionId;
@Excel(name = "施工节点")
private String constructionName;
private Long contractId;
@Excel(name = "合同编号")
private String contractNo;
private String remark;
public Long getOutId() {
@@ -192,6 +202,38 @@ public class MaterialOut extends BaseEntity {
this.status = status;
}
public Long getConstructionId() {
return constructionId;
}
public void setConstructionId(Long constructionId) {
this.constructionId = constructionId;
}
public String getConstructionName() {
return constructionName;
}
public void setConstructionName(String constructionName) {
this.constructionName = constructionName;
}
public Long getContractId() {
return contractId;
}
public void setContractId(Long contractId) {
this.contractId = contractId;
}
public String getContractNo() {
return contractNo;
}
public void setContractNo(String contractNo) {
this.contractNo = contractNo;
}
public String getRemark() {
return remark;
}
@@ -219,6 +261,10 @@ public class MaterialOut extends BaseEntity {
.append("warehouse", getWarehouse())
.append("location", getLocation())
.append("status", getStatus())
.append("constructionId", getConstructionId())
.append("constructionName", getConstructionName())
.append("contractId", getContractId())
.append("contractNo", getContractNo())
.append("remark", getRemark())
.append("createBy", getCreateBy())
.append("createTime", getCreateTime())

View File

@@ -0,0 +1,261 @@
package com.ruoyi.system.domain.engineering;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import jakarta.validation.constraints.NotNull;
import java.math.BigDecimal;
import java.util.Date;
public class MaterialPick extends BaseEntity {
private static final long serialVersionUID = 1L;
private Long pickId;
@Excel(name = "领料单号")
private String pickNo;
@NotNull(message = "物料ID不能为空")
private Long materialId;
@Excel(name = "物料编码")
private String materialCode;
@Excel(name = "物料名称")
private String materialName;
@NotNull(message = "领料数量不能为空")
@Excel(name = "领料数量")
private BigDecimal quantity;
@Excel(name = "单价")
private BigDecimal unitPrice;
@Excel(name = "金额")
private BigDecimal amount;
@Excel(name = "领料日期", width = 30, dateFormat = "yyyy-MM-dd")
private Date pickDate;
@Excel(name = "使用部门")
private String deptName;
@Excel(name = "领用人")
private String receiver;
@Excel(name = "用途")
private String purpose;
@Excel(name = "仓库")
private String warehouse;
@Excel(name = "库位")
private String location;
@Excel(name = "状态", readConverterExp = "pending=待审核,approved=已审核,issued=已发放,canceled=已取消")
private String status;
private Long constructionId;
@Excel(name = "施工节点")
private String constructionName;
private Long contractId;
@Excel(name = "合同编号")
private String contractNo;
private String remark;
public Long getPickId() {
return pickId;
}
public void setPickId(Long pickId) {
this.pickId = pickId;
}
public String getPickNo() {
return pickNo;
}
public void setPickNo(String pickNo) {
this.pickNo = pickNo;
}
public Long getMaterialId() {
return materialId;
}
public void setMaterialId(Long materialId) {
this.materialId = materialId;
}
public String getMaterialCode() {
return materialCode;
}
public void setMaterialCode(String materialCode) {
this.materialCode = materialCode;
}
public String getMaterialName() {
return materialName;
}
public void setMaterialName(String materialName) {
this.materialName = materialName;
}
public BigDecimal getQuantity() {
return quantity;
}
public void setQuantity(BigDecimal quantity) {
this.quantity = quantity;
}
public BigDecimal getUnitPrice() {
return unitPrice;
}
public void setUnitPrice(BigDecimal unitPrice) {
this.unitPrice = unitPrice;
}
public BigDecimal getAmount() {
return amount;
}
public void setAmount(BigDecimal amount) {
this.amount = amount;
}
public Date getPickDate() {
return pickDate;
}
public void setPickDate(Date pickDate) {
this.pickDate = pickDate;
}
public String getDeptName() {
return deptName;
}
public void setDeptName(String deptName) {
this.deptName = deptName;
}
public String getReceiver() {
return receiver;
}
public void setReceiver(String receiver) {
this.receiver = receiver;
}
public String getPurpose() {
return purpose;
}
public void setPurpose(String purpose) {
this.purpose = purpose;
}
public String getWarehouse() {
return warehouse;
}
public void setWarehouse(String warehouse) {
this.warehouse = warehouse;
}
public String getLocation() {
return location;
}
public void setLocation(String location) {
this.location = location;
}
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
public Long getConstructionId() {
return constructionId;
}
public void setConstructionId(Long constructionId) {
this.constructionId = constructionId;
}
public String getConstructionName() {
return constructionName;
}
public void setConstructionName(String constructionName) {
this.constructionName = constructionName;
}
public Long getContractId() {
return contractId;
}
public void setContractId(Long contractId) {
this.contractId = contractId;
}
public String getContractNo() {
return contractNo;
}
public void setContractNo(String contractNo) {
this.contractNo = contractNo;
}
public String getRemark() {
return remark;
}
public void setRemark(String remark) {
this.remark = remark;
}
@Override
public String toString() {
return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
.append("pickId", getPickId())
.append("pickNo", getPickNo())
.append("materialId", getMaterialId())
.append("materialCode", getMaterialCode())
.append("materialName", getMaterialName())
.append("quantity", getQuantity())
.append("unitPrice", getUnitPrice())
.append("amount", getAmount())
.append("pickDate", getPickDate())
.append("deptName", getDeptName())
.append("receiver", getReceiver())
.append("purpose", getPurpose())
.append("warehouse", getWarehouse())
.append("location", getLocation())
.append("status", getStatus())
.append("constructionId", getConstructionId())
.append("constructionName", getConstructionName())
.append("contractId", getContractId())
.append("contractNo", getContractNo())
.append("remark", getRemark())
.append("createBy", getCreateBy())
.append("createTime", getCreateTime())
.append("updateBy", getUpdateBy())
.append("updateTime", getUpdateTime())
.toString();
}
}

View File

@@ -0,0 +1,237 @@
package com.ruoyi.system.domain.engineering;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import jakarta.validation.constraints.NotNull;
import java.math.BigDecimal;
import java.util.Date;
public class MaterialReturn extends BaseEntity {
private static final long serialVersionUID = 1L;
private Long returnId;
@Excel(name = "退货单号")
private String returnNo;
@NotNull(message = "物料ID不能为空")
private Long materialId;
@Excel(name = "物料编码")
private String materialCode;
@Excel(name = "物料名称")
private String materialName;
@NotNull(message = "退货数量不能为空")
@Excel(name = "退货数量")
private BigDecimal quantity;
@Excel(name = "单价")
private BigDecimal unitPrice;
@Excel(name = "金额")
private BigDecimal amount;
@Excel(name = "退货日期", width = 30, dateFormat = "yyyy-MM-dd")
private Date returnDate;
@Excel(name = "退货原因")
private String returnReason;
private Long supplierId;
@Excel(name = "供应商名称")
private String supplierName;
@Excel(name = "仓库")
private String warehouse;
@Excel(name = "库位")
private String location;
@Excel(name = "状态", readConverterExp = "pending=待审核,approved=已审核,canceled=已取消")
private String status;
private Long contractId;
@Excel(name = "合同编号")
private String contractNo;
private String remark;
public Long getReturnId() {
return returnId;
}
public void setReturnId(Long returnId) {
this.returnId = returnId;
}
public String getReturnNo() {
return returnNo;
}
public void setReturnNo(String returnNo) {
this.returnNo = returnNo;
}
public Long getMaterialId() {
return materialId;
}
public void setMaterialId(Long materialId) {
this.materialId = materialId;
}
public String getMaterialCode() {
return materialCode;
}
public void setMaterialCode(String materialCode) {
this.materialCode = materialCode;
}
public String getMaterialName() {
return materialName;
}
public void setMaterialName(String materialName) {
this.materialName = materialName;
}
public BigDecimal getQuantity() {
return quantity;
}
public void setQuantity(BigDecimal quantity) {
this.quantity = quantity;
}
public BigDecimal getUnitPrice() {
return unitPrice;
}
public void setUnitPrice(BigDecimal unitPrice) {
this.unitPrice = unitPrice;
}
public BigDecimal getAmount() {
return amount;
}
public void setAmount(BigDecimal amount) {
this.amount = amount;
}
public Date getReturnDate() {
return returnDate;
}
public void setReturnDate(Date returnDate) {
this.returnDate = returnDate;
}
public String getReturnReason() {
return returnReason;
}
public void setReturnReason(String returnReason) {
this.returnReason = returnReason;
}
public Long getSupplierId() {
return supplierId;
}
public void setSupplierId(Long supplierId) {
this.supplierId = supplierId;
}
public String getSupplierName() {
return supplierName;
}
public void setSupplierName(String supplierName) {
this.supplierName = supplierName;
}
public String getWarehouse() {
return warehouse;
}
public void setWarehouse(String warehouse) {
this.warehouse = warehouse;
}
public String getLocation() {
return location;
}
public void setLocation(String location) {
this.location = location;
}
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
public Long getContractId() {
return contractId;
}
public void setContractId(Long contractId) {
this.contractId = contractId;
}
public String getContractNo() {
return contractNo;
}
public void setContractNo(String contractNo) {
this.contractNo = contractNo;
}
public String getRemark() {
return remark;
}
public void setRemark(String remark) {
this.remark = remark;
}
@Override
public String toString() {
return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
.append("returnId", getReturnId())
.append("returnNo", getReturnNo())
.append("materialId", getMaterialId())
.append("materialCode", getMaterialCode())
.append("materialName", getMaterialName())
.append("quantity", getQuantity())
.append("unitPrice", getUnitPrice())
.append("amount", getAmount())
.append("returnDate", getReturnDate())
.append("returnReason", getReturnReason())
.append("supplierId", getSupplierId())
.append("supplierName", getSupplierName())
.append("warehouse", getWarehouse())
.append("location", getLocation())
.append("status", getStatus())
.append("contractId", getContractId())
.append("contractNo", getContractNo())
.append("remark", getRemark())
.append("createBy", getCreateBy())
.append("createTime", getCreateTime())
.append("updateBy", getUpdateBy())
.append("updateTime", getUpdateTime())
.toString();
}
}

View File

@@ -0,0 +1,226 @@
package com.ruoyi.system.domain.engineering;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import jakarta.validation.constraints.NotNull;
import java.math.BigDecimal;
import java.util.Date;
public class MaterialReturnBack extends BaseEntity {
private static final long serialVersionUID = 1L;
private Long returnBackId;
@Excel(name = "还料单号")
private String returnBackNo;
private Long pickId;
@Excel(name = "原领料单号")
private String pickNo;
@NotNull(message = "物料ID不能为空")
private Long materialId;
@Excel(name = "物料编码")
private String materialCode;
@Excel(name = "物料名称")
private String materialName;
@NotNull(message = "还料数量不能为空")
@Excel(name = "还料数量")
private BigDecimal quantity;
@Excel(name = "单价")
private BigDecimal unitPrice;
@Excel(name = "金额")
private BigDecimal amount;
@Excel(name = "还料日期", width = 30, dateFormat = "yyyy-MM-dd")
private Date returnBackDate;
@Excel(name = "使用部门")
private String deptName;
@Excel(name = "还料人")
private String returnBackPerson;
@Excel(name = "仓库")
private String warehouse;
@Excel(name = "库位")
private String location;
@Excel(name = "状态", readConverterExp = "pending=待审核,approved=已审核,canceled=已取消")
private String status;
private String remark;
public Long getReturnBackId() {
return returnBackId;
}
public void setReturnBackId(Long returnBackId) {
this.returnBackId = returnBackId;
}
public String getReturnBackNo() {
return returnBackNo;
}
public void setReturnBackNo(String returnBackNo) {
this.returnBackNo = returnBackNo;
}
public Long getPickId() {
return pickId;
}
public void setPickId(Long pickId) {
this.pickId = pickId;
}
public String getPickNo() {
return pickNo;
}
public void setPickNo(String pickNo) {
this.pickNo = pickNo;
}
public Long getMaterialId() {
return materialId;
}
public void setMaterialId(Long materialId) {
this.materialId = materialId;
}
public String getMaterialCode() {
return materialCode;
}
public void setMaterialCode(String materialCode) {
this.materialCode = materialCode;
}
public String getMaterialName() {
return materialName;
}
public void setMaterialName(String materialName) {
this.materialName = materialName;
}
public BigDecimal getQuantity() {
return quantity;
}
public void setQuantity(BigDecimal quantity) {
this.quantity = quantity;
}
public BigDecimal getUnitPrice() {
return unitPrice;
}
public void setUnitPrice(BigDecimal unitPrice) {
this.unitPrice = unitPrice;
}
public BigDecimal getAmount() {
return amount;
}
public void setAmount(BigDecimal amount) {
this.amount = amount;
}
public Date getReturnBackDate() {
return returnBackDate;
}
public void setReturnBackDate(Date returnBackDate) {
this.returnBackDate = returnBackDate;
}
public String getDeptName() {
return deptName;
}
public void setDeptName(String deptName) {
this.deptName = deptName;
}
public String getReturnBackPerson() {
return returnBackPerson;
}
public void setReturnBackPerson(String returnBackPerson) {
this.returnBackPerson = returnBackPerson;
}
public String getWarehouse() {
return warehouse;
}
public void setWarehouse(String warehouse) {
this.warehouse = warehouse;
}
public String getLocation() {
return location;
}
public void setLocation(String location) {
this.location = location;
}
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
public String getRemark() {
return remark;
}
public void setRemark(String remark) {
this.remark = remark;
}
@Override
public String toString() {
return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
.append("returnBackId", getReturnBackId())
.append("returnBackNo", getReturnBackNo())
.append("pickId", getPickId())
.append("pickNo", getPickNo())
.append("materialId", getMaterialId())
.append("materialCode", getMaterialCode())
.append("materialName", getMaterialName())
.append("quantity", getQuantity())
.append("unitPrice", getUnitPrice())
.append("amount", getAmount())
.append("returnBackDate", getReturnBackDate())
.append("deptName", getDeptName())
.append("returnBackPerson", getReturnBackPerson())
.append("warehouse", getWarehouse())
.append("location", getLocation())
.append("status", getStatus())
.append("remark", getRemark())
.append("createBy", getCreateBy())
.append("createTime", getCreateTime())
.append("updateBy", getUpdateBy())
.append("updateTime", getUpdateTime())
.toString();
}
}

View File

@@ -0,0 +1,226 @@
package com.ruoyi.system.domain.engineering;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import jakarta.validation.constraints.NotNull;
import java.math.BigDecimal;
import java.util.Date;
public class MaterialScrap extends BaseEntity {
private static final long serialVersionUID = 1L;
private Long scrapId;
@Excel(name = "报损报溢单号")
private String scrapNo;
@NotNull(message = "物料ID不能为空")
private Long materialId;
@Excel(name = "物料编码")
private String materialCode;
@Excel(name = "物料名称")
private String materialName;
@NotNull(message = "数量不能为空")
@Excel(name = "数量")
private BigDecimal quantity;
@Excel(name = "单价")
private BigDecimal unitPrice;
@Excel(name = "金额")
private BigDecimal amount;
@Excel(name = "类型", readConverterExp = "scrap=报损,overflow=报溢")
private String scrapType;
@Excel(name = "原因")
private String reason;
@Excel(name = "日期", width = 30, dateFormat = "yyyy-MM-dd")
private Date scrapDate;
@Excel(name = "仓库")
private String warehouse;
@Excel(name = "库位")
private String location;
@Excel(name = "状态", readConverterExp = "pending=待审核,approved=已审核,canceled=已取消")
private String status;
private Long inventoryId;
@Excel(name = "关联盘点单号")
private String inventoryNo;
private String remark;
public Long getScrapId() {
return scrapId;
}
public void setScrapId(Long scrapId) {
this.scrapId = scrapId;
}
public String getScrapNo() {
return scrapNo;
}
public void setScrapNo(String scrapNo) {
this.scrapNo = scrapNo;
}
public Long getMaterialId() {
return materialId;
}
public void setMaterialId(Long materialId) {
this.materialId = materialId;
}
public String getMaterialCode() {
return materialCode;
}
public void setMaterialCode(String materialCode) {
this.materialCode = materialCode;
}
public String getMaterialName() {
return materialName;
}
public void setMaterialName(String materialName) {
this.materialName = materialName;
}
public BigDecimal getQuantity() {
return quantity;
}
public void setQuantity(BigDecimal quantity) {
this.quantity = quantity;
}
public BigDecimal getUnitPrice() {
return unitPrice;
}
public void setUnitPrice(BigDecimal unitPrice) {
this.unitPrice = unitPrice;
}
public BigDecimal getAmount() {
return amount;
}
public void setAmount(BigDecimal amount) {
this.amount = amount;
}
public String getScrapType() {
return scrapType;
}
public void setScrapType(String scrapType) {
this.scrapType = scrapType;
}
public String getReason() {
return reason;
}
public void setReason(String reason) {
this.reason = reason;
}
public Date getScrapDate() {
return scrapDate;
}
public void setScrapDate(Date scrapDate) {
this.scrapDate = scrapDate;
}
public String getWarehouse() {
return warehouse;
}
public void setWarehouse(String warehouse) {
this.warehouse = warehouse;
}
public String getLocation() {
return location;
}
public void setLocation(String location) {
this.location = location;
}
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
public Long getInventoryId() {
return inventoryId;
}
public void setInventoryId(Long inventoryId) {
this.inventoryId = inventoryId;
}
public String getInventoryNo() {
return inventoryNo;
}
public void setInventoryNo(String inventoryNo) {
this.inventoryNo = inventoryNo;
}
public String getRemark() {
return remark;
}
public void setRemark(String remark) {
this.remark = remark;
}
@Override
public String toString() {
return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
.append("scrapId", getScrapId())
.append("scrapNo", getScrapNo())
.append("materialId", getMaterialId())
.append("materialCode", getMaterialCode())
.append("materialName", getMaterialName())
.append("quantity", getQuantity())
.append("unitPrice", getUnitPrice())
.append("amount", getAmount())
.append("scrapType", getScrapType())
.append("reason", getReason())
.append("scrapDate", getScrapDate())
.append("warehouse", getWarehouse())
.append("location", getLocation())
.append("status", getStatus())
.append("inventoryId", getInventoryId())
.append("inventoryNo", getInventoryNo())
.append("remark", getRemark())
.append("createBy", getCreateBy())
.append("createTime", getCreateTime())
.append("updateBy", getUpdateBy())
.append("updateTime", getUpdateTime())
.toString();
}
}

View File

@@ -0,0 +1,238 @@
package com.ruoyi.system.domain.engineering;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import jakarta.validation.constraints.NotNull;
import java.math.BigDecimal;
import java.util.Date;
public class MaterialTransfer extends BaseEntity {
private static final long serialVersionUID = 1L;
private Long transferId;
@Excel(name = "调拨单号")
private String transferNo;
@NotNull(message = "物料ID不能为空")
private Long materialId;
@Excel(name = "物料编码")
private String materialCode;
@Excel(name = "物料名称")
private String materialName;
@NotNull(message = "调拨数量不能为空")
@Excel(name = "调拨数量")
private BigDecimal quantity;
@Excel(name = "单价")
private BigDecimal unitPrice;
@Excel(name = "金额")
private BigDecimal amount;
@Excel(name = "调拨日期", width = 30, dateFormat = "yyyy-MM-dd")
private Date transferDate;
@Excel(name = "调出仓库")
private String fromWarehouse;
@Excel(name = "调出库位")
private String fromLocation;
@Excel(name = "调入仓库")
private String toWarehouse;
@Excel(name = "调入库位")
private String toLocation;
@Excel(name = "调拨类型", readConverterExp = "out=调拨出库,in=调拨入库")
private String transferType;
@Excel(name = "状态", readConverterExp = "pending=待审核,approved=已审核,canceled=已取消")
private String status;
private Long relatedTransferId;
@Excel(name = "关联调拨单号")
private String relatedTransferNo;
private String remark;
public Long getTransferId() {
return transferId;
}
public void setTransferId(Long transferId) {
this.transferId = transferId;
}
public String getTransferNo() {
return transferNo;
}
public void setTransferNo(String transferNo) {
this.transferNo = transferNo;
}
public Long getMaterialId() {
return materialId;
}
public void setMaterialId(Long materialId) {
this.materialId = materialId;
}
public String getMaterialCode() {
return materialCode;
}
public void setMaterialCode(String materialCode) {
this.materialCode = materialCode;
}
public String getMaterialName() {
return materialName;
}
public void setMaterialName(String materialName) {
this.materialName = materialName;
}
public BigDecimal getQuantity() {
return quantity;
}
public void setQuantity(BigDecimal quantity) {
this.quantity = quantity;
}
public BigDecimal getUnitPrice() {
return unitPrice;
}
public void setUnitPrice(BigDecimal unitPrice) {
this.unitPrice = unitPrice;
}
public BigDecimal getAmount() {
return amount;
}
public void setAmount(BigDecimal amount) {
this.amount = amount;
}
public Date getTransferDate() {
return transferDate;
}
public void setTransferDate(Date transferDate) {
this.transferDate = transferDate;
}
public String getFromWarehouse() {
return fromWarehouse;
}
public void setFromWarehouse(String fromWarehouse) {
this.fromWarehouse = fromWarehouse;
}
public String getFromLocation() {
return fromLocation;
}
public void setFromLocation(String fromLocation) {
this.fromLocation = fromLocation;
}
public String getToWarehouse() {
return toWarehouse;
}
public void setToWarehouse(String toWarehouse) {
this.toWarehouse = toWarehouse;
}
public String getToLocation() {
return toLocation;
}
public void setToLocation(String toLocation) {
this.toLocation = toLocation;
}
public String getTransferType() {
return transferType;
}
public void setTransferType(String transferType) {
this.transferType = transferType;
}
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
public Long getRelatedTransferId() {
return relatedTransferId;
}
public void setRelatedTransferId(Long relatedTransferId) {
this.relatedTransferId = relatedTransferId;
}
public String getRelatedTransferNo() {
return relatedTransferNo;
}
public void setRelatedTransferNo(String relatedTransferNo) {
this.relatedTransferNo = relatedTransferNo;
}
public String getRemark() {
return remark;
}
public void setRemark(String remark) {
this.remark = remark;
}
@Override
public String toString() {
return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
.append("transferId", getTransferId())
.append("transferNo", getTransferNo())
.append("materialId", getMaterialId())
.append("materialCode", getMaterialCode())
.append("materialName", getMaterialName())
.append("quantity", getQuantity())
.append("unitPrice", getUnitPrice())
.append("amount", getAmount())
.append("transferDate", getTransferDate())
.append("fromWarehouse", getFromWarehouse())
.append("fromLocation", getFromLocation())
.append("toWarehouse", getToWarehouse())
.append("toLocation", getToLocation())
.append("transferType", getTransferType())
.append("status", getStatus())
.append("relatedTransferId", getRelatedTransferId())
.append("relatedTransferNo", getRelatedTransferNo())
.append("remark", getRemark())
.append("createBy", getCreateBy())
.append("createTime", getCreateTime())
.append("updateBy", getUpdateBy())
.append("updateTime", getUpdateTime())
.toString();
}
}

View File

@@ -43,11 +43,11 @@ public class Supplier extends BaseEntity {
@Size(max = 100, message = "联系人长度不能超过100个字符")
@Excel(name = "联系人")
private String contact;
private String contactPerson;
@Size(max = 50, message = "联系电话长度不能超过50个字符")
@Excel(name = "联系电话")
private String phone;
private String contactPhone;
@Size(max = 50, message = "手机号长度不能超过50个字符")
@Excel(name = "手机号")
@@ -199,20 +199,20 @@ public class Supplier extends BaseEntity {
this.legalPerson = legalPerson;
}
public String getContact() {
return contact;
public String getContactPerson() {
return contactPerson;
}
public void setContact(String contact) {
this.contact = contact;
public void setContactPerson(String contactPerson) {
this.contactPerson = contactPerson;
}
public String getPhone() {
return phone;
public String getContactPhone() {
return contactPhone;
}
public void setPhone(String phone) {
this.phone = phone;
public void setContactPhone(String contactPhone) {
this.contactPhone = contactPhone;
}
public String getMobile() {

View File

@@ -0,0 +1,22 @@
package com.ruoyi.system.mapper.engineering;
import com.ruoyi.system.domain.engineering.MaterialInventoryDetail;
import java.util.List;
public interface MaterialInventoryDetailMapper {
List<MaterialInventoryDetail> selectMaterialInventoryDetailList(MaterialInventoryDetail detail);
MaterialInventoryDetail selectMaterialInventoryDetailById(Long detailId);
int insertMaterialInventoryDetail(MaterialInventoryDetail detail);
int updateMaterialInventoryDetail(MaterialInventoryDetail detail);
int updateMaterialInventoryDetailStatus(Long detailId, String status);
int deleteMaterialInventoryDetailById(Long detailId);
int deleteMaterialInventoryDetailByInventoryId(Long inventoryId);
}

View File

@@ -0,0 +1,22 @@
package com.ruoyi.system.mapper.engineering;
import com.ruoyi.system.domain.engineering.MaterialInventory;
import java.util.List;
public interface MaterialInventoryMapper {
List<MaterialInventory> selectMaterialInventoryList(MaterialInventory materialInventory);
MaterialInventory selectMaterialInventoryById(Long inventoryId);
int insertMaterialInventory(MaterialInventory materialInventory);
int updateMaterialInventory(MaterialInventory materialInventory);
int updateMaterialInventoryStatus(Long inventoryId, String status);
int deleteMaterialInventoryById(Long inventoryId);
int deleteMaterialInventoryByIds(Long[] inventoryIds);
}

View File

@@ -0,0 +1,22 @@
package com.ruoyi.system.mapper.engineering;
import com.ruoyi.system.domain.engineering.MaterialPick;
import java.util.List;
public interface MaterialPickMapper {
List<MaterialPick> selectMaterialPickList(MaterialPick materialPick);
MaterialPick selectMaterialPickById(Long pickId);
int insertMaterialPick(MaterialPick materialPick);
int updateMaterialPick(MaterialPick materialPick);
int updateMaterialPickStatus(Long pickId, String status);
int deleteMaterialPickById(Long pickId);
int deleteMaterialPickByIds(Long[] pickIds);
}

View File

@@ -0,0 +1,22 @@
package com.ruoyi.system.mapper.engineering;
import com.ruoyi.system.domain.engineering.MaterialReturnBack;
import java.util.List;
public interface MaterialReturnBackMapper {
List<MaterialReturnBack> selectMaterialReturnBackList(MaterialReturnBack materialReturnBack);
MaterialReturnBack selectMaterialReturnBackById(Long returnBackId);
int insertMaterialReturnBack(MaterialReturnBack materialReturnBack);
int updateMaterialReturnBack(MaterialReturnBack materialReturnBack);
int updateMaterialReturnBackStatus(Long returnBackId, String status);
int deleteMaterialReturnBackById(Long returnBackId);
int deleteMaterialReturnBackByIds(Long[] returnBackIds);
}

View File

@@ -0,0 +1,22 @@
package com.ruoyi.system.mapper.engineering;
import com.ruoyi.system.domain.engineering.MaterialReturn;
import java.util.List;
public interface MaterialReturnMapper {
List<MaterialReturn> selectMaterialReturnList(MaterialReturn materialReturn);
MaterialReturn selectMaterialReturnById(Long returnId);
int insertMaterialReturn(MaterialReturn materialReturn);
int updateMaterialReturn(MaterialReturn materialReturn);
int updateMaterialReturnStatus(Long returnId, String status);
int deleteMaterialReturnById(Long returnId);
int deleteMaterialReturnByIds(Long[] returnIds);
}

View File

@@ -0,0 +1,22 @@
package com.ruoyi.system.mapper.engineering;
import com.ruoyi.system.domain.engineering.MaterialScrap;
import java.util.List;
public interface MaterialScrapMapper {
List<MaterialScrap> selectMaterialScrapList(MaterialScrap materialScrap);
MaterialScrap selectMaterialScrapById(Long scrapId);
int insertMaterialScrap(MaterialScrap materialScrap);
int updateMaterialScrap(MaterialScrap materialScrap);
int updateMaterialScrapStatus(Long scrapId, String status);
int deleteMaterialScrapById(Long scrapId);
int deleteMaterialScrapByIds(Long[] scrapIds);
}

View File

@@ -0,0 +1,22 @@
package com.ruoyi.system.mapper.engineering;
import com.ruoyi.system.domain.engineering.MaterialTransfer;
import java.util.List;
public interface MaterialTransferMapper {
List<MaterialTransfer> selectMaterialTransferList(MaterialTransfer materialTransfer);
MaterialTransfer selectMaterialTransferById(Long transferId);
int insertMaterialTransfer(MaterialTransfer materialTransfer);
int updateMaterialTransfer(MaterialTransfer materialTransfer);
int updateMaterialTransferStatus(Long transferId, String status);
int deleteMaterialTransferById(Long transferId);
int deleteMaterialTransferByIds(Long[] transferIds);
}

View File

@@ -1,9 +1,7 @@
package com.ruoyi.system.service.engineering;
import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.system.domain.engineering.Material;
import com.ruoyi.system.domain.engineering.MaterialIn;
import com.ruoyi.system.domain.engineering.MaterialOut;
import com.ruoyi.system.domain.engineering.*;
import java.util.List;
@@ -45,4 +43,92 @@ public interface IMaterialService {
public TableDataInfo selectMaterialOutList(MaterialOut materialOut);
public MaterialOut selectMaterialOutById(Long outId);
public List<Material> selectWarningMaterials();
public String calculateWarningStatus(Material material);
public int insertMaterialReturn(MaterialReturn materialReturn);
public int updateMaterialReturn(MaterialReturn materialReturn);
public int approveMaterialReturn(Long returnId);
public int deleteMaterialReturnById(Long returnId);
public TableDataInfo selectMaterialReturnList(MaterialReturn materialReturn);
public MaterialReturn selectMaterialReturnById(Long returnId);
public int insertMaterialPick(MaterialPick materialPick);
public int updateMaterialPick(MaterialPick materialPick);
public int approveMaterialPick(Long pickId);
public int issueMaterialPick(Long pickId);
public int deleteMaterialPickById(Long pickId);
public TableDataInfo selectMaterialPickList(MaterialPick materialPick);
public MaterialPick selectMaterialPickById(Long pickId);
public int insertMaterialReturnBack(MaterialReturnBack materialReturnBack);
public int updateMaterialReturnBack(MaterialReturnBack materialReturnBack);
public int approveMaterialReturnBack(Long returnBackId);
public int deleteMaterialReturnBackById(Long returnBackId);
public TableDataInfo selectMaterialReturnBackList(MaterialReturnBack materialReturnBack);
public MaterialReturnBack selectMaterialReturnBackById(Long returnBackId);
public int insertMaterialTransfer(MaterialTransfer materialTransfer);
public int updateMaterialTransfer(MaterialTransfer materialTransfer);
public int approveMaterialTransfer(Long transferId);
public int deleteMaterialTransferById(Long transferId);
public TableDataInfo selectMaterialTransferList(MaterialTransfer materialTransfer);
public MaterialTransfer selectMaterialTransferById(Long transferId);
public int insertMaterialInventory(MaterialInventory materialInventory);
public int updateMaterialInventory(MaterialInventory materialInventory);
public int completeMaterialInventory(Long inventoryId);
public int adjustMaterialInventory(Long inventoryId);
public int deleteMaterialInventoryById(Long inventoryId);
public TableDataInfo selectMaterialInventoryList(MaterialInventory materialInventory);
public MaterialInventory selectMaterialInventoryById(Long inventoryId);
public int insertMaterialInventoryDetail(MaterialInventoryDetail detail);
public int updateMaterialInventoryDetail(MaterialInventoryDetail detail);
public int adjustMaterialInventoryDetail(Long detailId);
public List<MaterialInventoryDetail> selectMaterialInventoryDetailList(Long inventoryId);
public int insertMaterialScrap(MaterialScrap materialScrap);
public int updateMaterialScrap(MaterialScrap materialScrap);
public int approveMaterialScrap(Long scrapId);
public int deleteMaterialScrapById(Long scrapId);
public TableDataInfo selectMaterialScrapList(MaterialScrap materialScrap);
public MaterialScrap selectMaterialScrapById(Long scrapId);
}

View File

@@ -24,7 +24,8 @@ public class ConstructionServiceImpl implements IConstructionService {
@Override
public TableDataInfo selectConstructionList(Construction construction) {
List<Construction> list = constructionMapper.selectConstructionList(construction);
long total = PageHelper.getLocalPage().getTotal();
com.github.pagehelper.Page<?> page = PageHelper.getLocalPage();
long total = page != null ? page.getTotal() : list.size();
return TableDataInfo.build(list, total);
}

View File

@@ -37,7 +37,8 @@ public class ContractServiceImpl implements IContractService {
for (Contract c : list) {
c.setPaidAmount(sumPaymentAmountByContractId(c.getContractId()));
}
long total = PageHelper.getLocalPage().getTotal();
com.github.pagehelper.Page<?> page = PageHelper.getLocalPage();
long total = page != null ? page.getTotal() : list.size();
return TableDataInfo.build(list, total);
}

View File

@@ -3,12 +3,8 @@ package com.ruoyi.system.service.impl.engineering;
import com.github.pagehelper.PageHelper;
import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.system.domain.engineering.Material;
import com.ruoyi.system.domain.engineering.MaterialIn;
import com.ruoyi.system.domain.engineering.MaterialOut;
import com.ruoyi.system.mapper.engineering.MaterialInMapper;
import com.ruoyi.system.mapper.engineering.MaterialMapper;
import com.ruoyi.system.mapper.engineering.MaterialOutMapper;
import com.ruoyi.system.domain.engineering.*;
import com.ruoyi.system.mapper.engineering.*;
import com.ruoyi.system.service.engineering.IMaterialService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@@ -29,10 +25,32 @@ public class MaterialServiceImpl implements IMaterialService {
@Autowired
private MaterialOutMapper materialOutMapper;
@Autowired
private MaterialReturnMapper materialReturnMapper;
@Autowired
private MaterialPickMapper materialPickMapper;
@Autowired
private MaterialReturnBackMapper materialReturnBackMapper;
@Autowired
private MaterialTransferMapper materialTransferMapper;
@Autowired
private MaterialInventoryMapper materialInventoryMapper;
@Autowired
private MaterialInventoryDetailMapper materialInventoryDetailMapper;
@Autowired
private MaterialScrapMapper materialScrapMapper;
@Override
public TableDataInfo selectMaterialList(Material material) {
List<Material> list = materialMapper.selectMaterialList(material);
long total = PageHelper.getLocalPage().getTotal();
com.github.pagehelper.Page<?> page = PageHelper.getLocalPage();
long total = page != null ? page.getTotal() : list.size();
return TableDataInfo.build(list, total);
}
@@ -122,7 +140,8 @@ public class MaterialServiceImpl implements IMaterialService {
@Override
public TableDataInfo selectMaterialInList(MaterialIn materialIn) {
List<MaterialIn> list = materialInMapper.selectMaterialInList(materialIn);
long total = PageHelper.getLocalPage().getTotal();
com.github.pagehelper.Page<?> page = PageHelper.getLocalPage();
long total = page != null ? page.getTotal() : list.size();
return TableDataInfo.build(list, total);
}
@@ -182,7 +201,8 @@ public class MaterialServiceImpl implements IMaterialService {
@Override
public TableDataInfo selectMaterialOutList(MaterialOut materialOut) {
List<MaterialOut> list = materialOutMapper.selectMaterialOutList(materialOut);
long total = PageHelper.getLocalPage().getTotal();
com.github.pagehelper.Page<?> page = PageHelper.getLocalPage();
long total = page != null ? page.getTotal() : list.size();
return TableDataInfo.build(list, total);
}
@@ -190,4 +210,486 @@ public class MaterialServiceImpl implements IMaterialService {
public MaterialOut selectMaterialOutById(Long outId) {
return materialOutMapper.selectMaterialOutById(outId);
}
@Override
public List<Material> selectWarningMaterials() {
List<Material> allMaterials = materialMapper.selectMaterialList(new Material());
List<Material> warningMaterials = new java.util.ArrayList<>();
for (Material material : allMaterials) {
String status = calculateWarningStatus(material);
if (!"normal".equals(status)) {
material.setWarningStatus(status);
warningMaterials.add(material);
}
}
return warningMaterials;
}
@Override
public String calculateWarningStatus(Material material) {
BigDecimal stock = material.getStock() != null ? material.getStock() : BigDecimal.ZERO;
BigDecimal minStock = material.getMinStock() != null ? material.getMinStock() : BigDecimal.ZERO;
BigDecimal safetyStock = material.getSafetyStock() != null ? material.getSafetyStock() : minStock;
if (safetyStock.compareTo(BigDecimal.ZERO) <= 0) {
return "normal";
}
if (stock.compareTo(BigDecimal.ZERO) <= 0) {
return "urgent";
}
if (stock.compareTo(safetyStock) < 0) {
BigDecimal ratio = stock.divide(safetyStock, 2, java.math.RoundingMode.HALF_UP);
if (ratio.compareTo(new BigDecimal("0.3")) < 0) {
return "urgent";
} else {
return "warning";
}
}
return "normal";
}
@Override
@Transactional
public int insertMaterialReturn(MaterialReturn materialReturn) {
if (StringUtils.isBlank(materialReturn.getStatus())) {
materialReturn.setStatus("pending");
}
return materialReturnMapper.insertMaterialReturn(materialReturn);
}
@Override
@Transactional
public int updateMaterialReturn(MaterialReturn materialReturn) {
return materialReturnMapper.updateMaterialReturn(materialReturn);
}
@Override
@Transactional
public int approveMaterialReturn(Long returnId) {
MaterialReturn materialReturn = materialReturnMapper.selectMaterialReturnById(returnId);
if (materialReturn == null) {
throw new RuntimeException("退货记录不存在");
}
materialReturnMapper.updateMaterialReturnStatus(returnId, "approved");
Material material = materialMapper.selectMaterialById(materialReturn.getMaterialId());
if (material != null) {
BigDecimal currentStock = material.getStock() != null ? material.getStock() : BigDecimal.ZERO;
BigDecimal newStock = currentStock.subtract(materialReturn.getQuantity() != null ? materialReturn.getQuantity() : BigDecimal.ZERO);
if (newStock.compareTo(BigDecimal.ZERO) < 0) {
newStock = BigDecimal.ZERO;
}
materialMapper.updateMaterialStock(materialReturn.getMaterialId(), newStock);
}
return 1;
}
@Override
@Transactional
public int deleteMaterialReturnById(Long returnId) {
return materialReturnMapper.deleteMaterialReturnById(returnId);
}
@Override
public TableDataInfo selectMaterialReturnList(MaterialReturn materialReturn) {
List<MaterialReturn> list = materialReturnMapper.selectMaterialReturnList(materialReturn);
com.github.pagehelper.Page<?> page = PageHelper.getLocalPage();
long total = page != null ? page.getTotal() : list.size();
return TableDataInfo.build(list, total);
}
@Override
public MaterialReturn selectMaterialReturnById(Long returnId) {
return materialReturnMapper.selectMaterialReturnById(returnId);
}
@Override
@Transactional
public int insertMaterialPick(MaterialPick materialPick) {
if (StringUtils.isBlank(materialPick.getStatus())) {
materialPick.setStatus("pending");
}
return materialPickMapper.insertMaterialPick(materialPick);
}
@Override
@Transactional
public int updateMaterialPick(MaterialPick materialPick) {
return materialPickMapper.updateMaterialPick(materialPick);
}
@Override
@Transactional
public int approveMaterialPick(Long pickId) {
MaterialPick materialPick = materialPickMapper.selectMaterialPickById(pickId);
if (materialPick == null) {
throw new RuntimeException("领料记录不存在");
}
Material material = materialMapper.selectMaterialById(materialPick.getMaterialId());
if (material == null) {
throw new RuntimeException("物料不存在");
}
BigDecimal currentStock = material.getStock() != null ? material.getStock() : BigDecimal.ZERO;
BigDecimal pickQuantity = materialPick.getQuantity() != null ? materialPick.getQuantity() : BigDecimal.ZERO;
if (currentStock.compareTo(pickQuantity) < 0) {
throw new RuntimeException("库存不足");
}
materialPickMapper.updateMaterialPickStatus(pickId, "approved");
return 1;
}
@Override
@Transactional
public int issueMaterialPick(Long pickId) {
MaterialPick materialPick = materialPickMapper.selectMaterialPickById(pickId);
if (materialPick == null) {
throw new RuntimeException("领料记录不存在");
}
if (!"approved".equals(materialPick.getStatus())) {
throw new RuntimeException("领料记录未通过审核");
}
Material material = materialMapper.selectMaterialById(materialPick.getMaterialId());
if (material != null) {
BigDecimal currentStock = material.getStock() != null ? material.getStock() : BigDecimal.ZERO;
BigDecimal newStock = currentStock.subtract(materialPick.getQuantity() != null ? materialPick.getQuantity() : BigDecimal.ZERO);
materialMapper.updateMaterialStock(materialPick.getMaterialId(), newStock);
}
materialPickMapper.updateMaterialPickStatus(pickId, "issued");
return 1;
}
@Override
@Transactional
public int deleteMaterialPickById(Long pickId) {
return materialPickMapper.deleteMaterialPickById(pickId);
}
@Override
public TableDataInfo selectMaterialPickList(MaterialPick materialPick) {
List<MaterialPick> list = materialPickMapper.selectMaterialPickList(materialPick);
com.github.pagehelper.Page<?> page = PageHelper.getLocalPage();
long total = page != null ? page.getTotal() : list.size();
return TableDataInfo.build(list, total);
}
@Override
public MaterialPick selectMaterialPickById(Long pickId) {
return materialPickMapper.selectMaterialPickById(pickId);
}
@Override
@Transactional
public int insertMaterialReturnBack(MaterialReturnBack materialReturnBack) {
if (StringUtils.isBlank(materialReturnBack.getStatus())) {
materialReturnBack.setStatus("pending");
}
return materialReturnBackMapper.insertMaterialReturnBack(materialReturnBack);
}
@Override
@Transactional
public int updateMaterialReturnBack(MaterialReturnBack materialReturnBack) {
return materialReturnBackMapper.updateMaterialReturnBack(materialReturnBack);
}
@Override
@Transactional
public int approveMaterialReturnBack(Long returnBackId) {
MaterialReturnBack materialReturnBack = materialReturnBackMapper.selectMaterialReturnBackById(returnBackId);
if (materialReturnBack == null) {
throw new RuntimeException("还料记录不存在");
}
materialReturnBackMapper.updateMaterialReturnBackStatus(returnBackId, "approved");
Material material = materialMapper.selectMaterialById(materialReturnBack.getMaterialId());
if (material != null) {
BigDecimal currentStock = material.getStock() != null ? material.getStock() : BigDecimal.ZERO;
BigDecimal newStock = currentStock.add(materialReturnBack.getQuantity() != null ? materialReturnBack.getQuantity() : BigDecimal.ZERO);
materialMapper.updateMaterialStock(materialReturnBack.getMaterialId(), newStock);
}
return 1;
}
@Override
@Transactional
public int deleteMaterialReturnBackById(Long returnBackId) {
return materialReturnBackMapper.deleteMaterialReturnBackById(returnBackId);
}
@Override
public TableDataInfo selectMaterialReturnBackList(MaterialReturnBack materialReturnBack) {
List<MaterialReturnBack> list = materialReturnBackMapper.selectMaterialReturnBackList(materialReturnBack);
com.github.pagehelper.Page<?> page = PageHelper.getLocalPage();
long total = page != null ? page.getTotal() : list.size();
return TableDataInfo.build(list, total);
}
@Override
public MaterialReturnBack selectMaterialReturnBackById(Long returnBackId) {
return materialReturnBackMapper.selectMaterialReturnBackById(returnBackId);
}
@Override
@Transactional
public int insertMaterialTransfer(MaterialTransfer materialTransfer) {
if (StringUtils.isBlank(materialTransfer.getStatus())) {
materialTransfer.setStatus("pending");
}
return materialTransferMapper.insertMaterialTransfer(materialTransfer);
}
@Override
@Transactional
public int updateMaterialTransfer(MaterialTransfer materialTransfer) {
return materialTransferMapper.updateMaterialTransfer(materialTransfer);
}
@Override
@Transactional
public int approveMaterialTransfer(Long transferId) {
MaterialTransfer materialTransfer = materialTransferMapper.selectMaterialTransferById(transferId);
if (materialTransfer == null) {
throw new RuntimeException("调拨记录不存在");
}
materialTransferMapper.updateMaterialTransferStatus(transferId, "approved");
if ("out".equals(materialTransfer.getTransferType())) {
Material material = materialMapper.selectMaterialById(materialTransfer.getMaterialId());
if (material != null) {
BigDecimal currentStock = material.getStock() != null ? material.getStock() : BigDecimal.ZERO;
BigDecimal newStock = currentStock.subtract(materialTransfer.getQuantity() != null ? materialTransfer.getQuantity() : BigDecimal.ZERO);
materialMapper.updateMaterialStock(materialTransfer.getMaterialId(), newStock);
}
} else if ("in".equals(materialTransfer.getTransferType())) {
Material material = materialMapper.selectMaterialById(materialTransfer.getMaterialId());
if (material != null) {
BigDecimal currentStock = material.getStock() != null ? material.getStock() : BigDecimal.ZERO;
BigDecimal newStock = currentStock.add(materialTransfer.getQuantity() != null ? materialTransfer.getQuantity() : BigDecimal.ZERO);
materialMapper.updateMaterialStock(materialTransfer.getMaterialId(), newStock);
}
}
return 1;
}
@Override
@Transactional
public int deleteMaterialTransferById(Long transferId) {
return materialTransferMapper.deleteMaterialTransferById(transferId);
}
@Override
public TableDataInfo selectMaterialTransferList(MaterialTransfer materialTransfer) {
List<MaterialTransfer> list = materialTransferMapper.selectMaterialTransferList(materialTransfer);
com.github.pagehelper.Page<?> page = PageHelper.getLocalPage();
long total = page != null ? page.getTotal() : list.size();
return TableDataInfo.build(list, total);
}
@Override
public MaterialTransfer selectMaterialTransferById(Long transferId) {
return materialTransferMapper.selectMaterialTransferById(transferId);
}
@Override
@Transactional
public int insertMaterialInventory(MaterialInventory materialInventory) {
if (StringUtils.isBlank(materialInventory.getStatus())) {
materialInventory.setStatus("pending");
}
return materialInventoryMapper.insertMaterialInventory(materialInventory);
}
@Override
@Transactional
public int updateMaterialInventory(MaterialInventory materialInventory) {
return materialInventoryMapper.updateMaterialInventory(materialInventory);
}
@Override
@Transactional
public int completeMaterialInventory(Long inventoryId) {
MaterialInventory inventory = materialInventoryMapper.selectMaterialInventoryById(inventoryId);
if (inventory == null) {
throw new RuntimeException("盘点记录不存在");
}
materialInventoryMapper.updateMaterialInventoryStatus(inventoryId, "completed");
return 1;
}
@Override
@Transactional
public int adjustMaterialInventory(Long inventoryId) {
MaterialInventory inventory = materialInventoryMapper.selectMaterialInventoryById(inventoryId);
if (inventory == null) {
throw new RuntimeException("盘点记录不存在");
}
List<MaterialInventoryDetail> details = materialInventoryDetailMapper.selectMaterialInventoryDetailList(new MaterialInventoryDetail());
for (MaterialInventoryDetail detail : details) {
if ("pending".equals(detail.getStatus()) && detail.getDiffQuantity() != null && detail.getDiffQuantity().compareTo(BigDecimal.ZERO) != 0) {
Material material = materialMapper.selectMaterialById(detail.getMaterialId());
if (material != null) {
BigDecimal currentStock = material.getStock() != null ? material.getStock() : BigDecimal.ZERO;
BigDecimal newStock = currentStock.add(detail.getDiffQuantity());
materialMapper.updateMaterialStock(detail.getMaterialId(), newStock);
materialInventoryDetailMapper.updateMaterialInventoryDetailStatus(detail.getDetailId(), "adjusted");
}
}
}
materialInventoryMapper.updateMaterialInventoryStatus(inventoryId, "adjusted");
return 1;
}
@Override
@Transactional
public int deleteMaterialInventoryById(Long inventoryId) {
materialInventoryDetailMapper.deleteMaterialInventoryDetailByInventoryId(inventoryId);
return materialInventoryMapper.deleteMaterialInventoryById(inventoryId);
}
@Override
public TableDataInfo selectMaterialInventoryList(MaterialInventory materialInventory) {
List<MaterialInventory> list = materialInventoryMapper.selectMaterialInventoryList(materialInventory);
com.github.pagehelper.Page<?> page = PageHelper.getLocalPage();
long total = page != null ? page.getTotal() : list.size();
return TableDataInfo.build(list, total);
}
@Override
public MaterialInventory selectMaterialInventoryById(Long inventoryId) {
return materialInventoryMapper.selectMaterialInventoryById(inventoryId);
}
@Override
@Transactional
public int insertMaterialInventoryDetail(MaterialInventoryDetail detail) {
if (StringUtils.isBlank(detail.getStatus())) {
detail.setStatus("pending");
}
if (detail.getDiffQuantity() == null) {
BigDecimal systemStock = detail.getSystemStock() != null ? detail.getSystemStock() : BigDecimal.ZERO;
BigDecimal actualStock = detail.getActualStock() != null ? detail.getActualStock() : BigDecimal.ZERO;
detail.setDiffQuantity(actualStock.subtract(systemStock));
}
return materialInventoryDetailMapper.insertMaterialInventoryDetail(detail);
}
@Override
@Transactional
public int updateMaterialInventoryDetail(MaterialInventoryDetail detail) {
if (detail.getDiffQuantity() == null) {
BigDecimal systemStock = detail.getSystemStock() != null ? detail.getSystemStock() : BigDecimal.ZERO;
BigDecimal actualStock = detail.getActualStock() != null ? detail.getActualStock() : BigDecimal.ZERO;
detail.setDiffQuantity(actualStock.subtract(systemStock));
}
return materialInventoryDetailMapper.updateMaterialInventoryDetail(detail);
}
@Override
@Transactional
public int adjustMaterialInventoryDetail(Long detailId) {
MaterialInventoryDetail detail = materialInventoryDetailMapper.selectMaterialInventoryDetailById(detailId);
if (detail == null) {
throw new RuntimeException("盘点明细不存在");
}
if (detail.getDiffQuantity() != null && detail.getDiffQuantity().compareTo(BigDecimal.ZERO) != 0) {
Material material = materialMapper.selectMaterialById(detail.getMaterialId());
if (material != null) {
BigDecimal currentStock = material.getStock() != null ? material.getStock() : BigDecimal.ZERO;
BigDecimal newStock = currentStock.add(detail.getDiffQuantity());
materialMapper.updateMaterialStock(detail.getMaterialId(), newStock);
}
}
materialInventoryDetailMapper.updateMaterialInventoryDetailStatus(detailId, "adjusted");
return 1;
}
@Override
public List<MaterialInventoryDetail> selectMaterialInventoryDetailList(Long inventoryId) {
MaterialInventoryDetail query = new MaterialInventoryDetail();
query.setInventoryId(inventoryId);
return materialInventoryDetailMapper.selectMaterialInventoryDetailList(query);
}
@Override
@Transactional
public int insertMaterialScrap(MaterialScrap materialScrap) {
if (StringUtils.isBlank(materialScrap.getStatus())) {
materialScrap.setStatus("pending");
}
return materialScrapMapper.insertMaterialScrap(materialScrap);
}
@Override
@Transactional
public int updateMaterialScrap(MaterialScrap materialScrap) {
return materialScrapMapper.updateMaterialScrap(materialScrap);
}
@Override
@Transactional
public int approveMaterialScrap(Long scrapId) {
MaterialScrap materialScrap = materialScrapMapper.selectMaterialScrapById(scrapId);
if (materialScrap == null) {
throw new RuntimeException("报损报溢记录不存在");
}
materialScrapMapper.updateMaterialScrapStatus(scrapId, "approved");
Material material = materialMapper.selectMaterialById(materialScrap.getMaterialId());
if (material != null) {
BigDecimal currentStock = material.getStock() != null ? material.getStock() : BigDecimal.ZERO;
BigDecimal quantity = materialScrap.getQuantity() != null ? materialScrap.getQuantity() : BigDecimal.ZERO;
if ("scrap".equals(materialScrap.getScrapType())) {
BigDecimal newStock = currentStock.subtract(quantity);
if (newStock.compareTo(BigDecimal.ZERO) < 0) {
newStock = BigDecimal.ZERO;
}
materialMapper.updateMaterialStock(materialScrap.getMaterialId(), newStock);
} else if ("overflow".equals(materialScrap.getScrapType())) {
BigDecimal newStock = currentStock.add(quantity);
materialMapper.updateMaterialStock(materialScrap.getMaterialId(), newStock);
}
}
return 1;
}
@Override
@Transactional
public int deleteMaterialScrapById(Long scrapId) {
return materialScrapMapper.deleteMaterialScrapById(scrapId);
}
@Override
public TableDataInfo selectMaterialScrapList(MaterialScrap materialScrap) {
List<MaterialScrap> list = materialScrapMapper.selectMaterialScrapList(materialScrap);
com.github.pagehelper.Page<?> page = PageHelper.getLocalPage();
long total = page != null ? page.getTotal() : list.size();
return TableDataInfo.build(list, total);
}
@Override
public MaterialScrap selectMaterialScrapById(Long scrapId) {
return materialScrapMapper.selectMaterialScrapById(scrapId);
}
}

View File

@@ -3,9 +3,11 @@ package com.ruoyi.system.service.impl.engineering;
import com.github.pagehelper.PageHelper;
import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.system.domain.engineering.Construction;
import com.ruoyi.system.domain.engineering.Contract;
import com.ruoyi.system.domain.engineering.Payment;
import com.ruoyi.system.domain.engineering.SupplierPaymentRecord;
import com.ruoyi.system.mapper.engineering.ConstructionMapper;
import com.ruoyi.system.mapper.engineering.ContractMapper;
import com.ruoyi.system.mapper.engineering.PaymentMapper;
import com.ruoyi.system.mapper.engineering.SupplierPaymentRecordMapper;
@@ -30,10 +32,14 @@ public class PaymentServiceImpl implements IPaymentService {
@Autowired
private SupplierPaymentRecordMapper supplierPaymentRecordMapper;
@Autowired
private ConstructionMapper constructionMapper;
@Override
public TableDataInfo selectPaymentList(Payment payment) {
List<Payment> list = paymentMapper.selectPaymentList(payment);
long total = PageHelper.getLocalPage().getTotal();
com.github.pagehelper.Page<?> page = PageHelper.getLocalPage();
long total = page != null ? page.getTotal() : list.size();
return TableDataInfo.build(list, total);
}
@@ -59,9 +65,69 @@ public class PaymentServiceImpl implements IPaymentService {
throw new RuntimeException("付款金额超过合同未付金额");
}
if ("progress".equals(payment.getPaymentType())) {
validateProgressPayment(payment);
} else if ("quality".equals(payment.getPaymentType())) {
validateQualityPayment(payment, contract);
}
return paymentMapper.insertPayment(payment);
}
private void validateProgressPayment(Payment payment) {
if (payment.getConstructionId() == null) {
throw new RuntimeException("进度款必须关联施工节点");
}
Construction construction = constructionMapper.selectConstructionById(payment.getConstructionId());
if (construction == null) {
throw new RuntimeException("施工节点不存在");
}
if (!"approved".equals(construction.getAcceptanceStatus())) {
throw new RuntimeException("施工节点未通过验收,无法申请进度款");
}
}
private void validateQualityPayment(Payment payment, Contract contract) {
if (contract.getEndDate() == null) {
throw new RuntimeException("合同未设置结束日期,无法申请质保金");
}
Date endDate = contract.getEndDate();
Date now = new Date();
if (now.before(endDate)) {
throw new RuntimeException("合同尚未到期,无法申请质保金");
}
BigDecimal qualityAmount = contract.getQualityAmount();
if (qualityAmount == null || qualityAmount.compareTo(BigDecimal.ZERO) <= 0) {
throw new RuntimeException("合同未设置质保金金额");
}
BigDecimal totalQualityPaid = sumQualityPaymentByContractId(contract.getContractId());
BigDecimal remainingQuality = qualityAmount.subtract(totalQualityPaid);
if (payment.getAmount().compareTo(remainingQuality) > 0) {
throw new RuntimeException("质保金申请金额超过剩余可申请金额");
}
}
private BigDecimal sumQualityPaymentByContractId(Long contractId) {
Payment query = new Payment();
query.setContractId(contractId);
query.setPaymentType("quality");
List<Payment> payments = paymentMapper.selectPaymentList(query);
BigDecimal sum = BigDecimal.ZERO;
for (Payment p : payments) {
if ("paid".equals(p.getStatus())) {
sum = sum.add(p.getAmount() != null ? p.getAmount() : BigDecimal.ZERO);
}
}
return sum;
}
@Override
@Transactional
public int updatePayment(Payment payment) {

View File

@@ -43,7 +43,8 @@ public class SupplierServiceImpl implements ISupplierService {
s.setTotalContractAmount(sumContractAmount(s.getSupplierId()));
s.setTotalPaymentAmount(sumPaymentAmount(s.getSupplierId()));
}
long total = PageHelper.getLocalPage().getTotal();
com.github.pagehelper.Page<?> page = PageHelper.getLocalPage();
long total = page != null ? page.getTotal() : list.size();
return TableDataInfo.build(list, total);
}

View File

@@ -0,0 +1,78 @@
<?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.ruoyi.system.mapper.engineering.MaterialInventoryDetailMapper">
<resultMap type="MaterialInventoryDetail" id="MaterialInventoryDetailResult">
<id property="detailId" column="detail_id" />
<result property="inventoryId" column="inventory_id" />
<result property="materialId" column="material_id" />
<result property="systemQuantity" column="system_quantity" />
<result property="actualQuantity" column="actual_quantity" />
<result property="difference" column="difference" />
<result property="status" column="status" />
<result property="remark" column="remark" />
<result property="createBy" column="create_by" />
<result property="createTime" column="create_time" />
<result property="updateBy" column="update_by" />
<result property="updateTime" column="update_time" />
</resultMap>
<sql id="selectMaterialInventoryDetailVo">
SELECT detail_id, inventory_id, material_id, system_quantity, actual_quantity,
difference, status, remark, create_by, create_time, update_by, update_time
FROM engineering_material_inventory_detail
</sql>
<select id="selectMaterialInventoryDetailList" parameterType="MaterialInventoryDetail" resultMap="MaterialInventoryDetailResult">
<include refid="selectMaterialInventoryDetailVo"/>
<where>
<if test="inventoryId != null">AND inventory_id = #{inventoryId}</if>
<if test="materialId != null">AND material_id = #{materialId}</if>
<if test="status != null and status != ''">AND status = #{status}</if>
</where>
ORDER BY create_time DESC
</select>
<select id="selectMaterialInventoryDetailById" parameterType="Long" resultMap="MaterialInventoryDetailResult">
<include refid="selectMaterialInventoryDetailVo"/>
WHERE detail_id = #{detailId}
</select>
<insert id="insertMaterialInventoryDetail" parameterType="MaterialInventoryDetail" useGeneratedKeys="true" keyProperty="detailId">
INSERT INTO engineering_material_inventory_detail (
inventory_id, material_id, system_quantity, actual_quantity, difference,
status, remark, create_by, create_time, update_by, update_time
) VALUES (
#{inventoryId}, #{materialId}, #{systemQuantity}, #{actualQuantity}, #{difference},
#{status}, #{remark}, #{createBy}, #{createTime}, #{updateBy}, #{updateTime}
)
</insert>
<update id="updateMaterialInventoryDetail" parameterType="MaterialInventoryDetail">
UPDATE engineering_material_inventory_detail
SET inventory_id = #{inventoryId},
material_id = #{materialId},
system_quantity = #{systemQuantity},
actual_quantity = #{actualQuantity},
difference = #{difference},
status = #{status},
remark = #{remark},
update_by = #{updateBy},
update_time = #{updateTime}
WHERE detail_id = #{detailId}
</update>
<update id="updateMaterialInventoryDetailStatus">
UPDATE engineering_material_inventory_detail
SET status = #{status}
WHERE detail_id = #{detailId}
</update>
<delete id="deleteMaterialInventoryDetailById" parameterType="Long">
DELETE FROM engineering_material_inventory_detail WHERE detail_id = #{detailId}
</delete>
<delete id="deleteMaterialInventoryDetailByInventoryId" parameterType="Long">
DELETE FROM engineering_material_inventory_detail WHERE inventory_id = #{inventoryId}
</delete>
</mapper>

View File

@@ -0,0 +1,70 @@
<?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.ruoyi.system.mapper.engineering.MaterialInventoryMapper">
<resultMap type="MaterialInventory" id="MaterialInventoryResult">
<id property="inventoryId" column="inventory_id" />
<result property="inventoryNo" column="inventory_no" />
<result property="inventoryDate" column="inventory_date" />
<result property="warehouse" column="warehouse" />
<result property="status" column="status" />
<result property="remark" column="remark" />
<result property="createBy" column="create_by" />
<result property="createTime" column="create_time" />
<result property="updateBy" column="update_by" />
<result property="updateTime" column="update_time" />
</resultMap>
<sql id="selectMaterialInventoryVo">
SELECT inventory_id, inventory_no, inventory_date, warehouse,
status, remark, create_by, create_time, update_by, update_time
FROM engineering_material_inventory
</sql>
<select id="selectMaterialInventoryList" parameterType="MaterialInventory" resultMap="MaterialInventoryResult">
<include refid="selectMaterialInventoryVo"/>
<where>
<if test="inventoryNo != null and inventoryNo != ''">AND inventory_no LIKE CONCAT('%', #{inventoryNo}, '%')</if>
<if test="warehouse != null and warehouse != ''">AND warehouse LIKE CONCAT('%', #{warehouse}, '%')</if>
<if test="status != null and status != ''">AND status = #{status}</if>
</where>
ORDER BY create_time DESC
</select>
<select id="selectMaterialInventoryById" parameterType="Long" resultMap="MaterialInventoryResult">
<include refid="selectMaterialInventoryVo"/>
WHERE inventory_id = #{inventoryId}
</select>
<insert id="insertMaterialInventory" parameterType="MaterialInventory" useGeneratedKeys="true" keyProperty="inventoryId">
INSERT INTO engineering_material_inventory (
inventory_no, inventory_date, warehouse, status, remark,
create_by, create_time, update_by, update_time
) VALUES (
#{inventoryNo}, #{inventoryDate}, #{warehouse}, #{status}, #{remark},
#{createBy}, #{createTime}, #{updateBy}, #{updateTime}
)
</insert>
<update id="updateMaterialInventory" parameterType="MaterialInventory">
UPDATE engineering_material_inventory
SET inventory_no = #{inventoryNo},
inventory_date = #{inventoryDate},
warehouse = #{warehouse},
status = #{status},
remark = #{remark},
update_by = #{updateBy},
update_time = #{updateTime}
WHERE inventory_id = #{inventoryId}
</update>
<update id="updateMaterialInventoryStatus">
UPDATE engineering_material_inventory
SET status = #{status}
WHERE inventory_id = #{inventoryId}
</update>
<delete id="deleteMaterialInventoryById" parameterType="Long">
DELETE FROM engineering_material_inventory WHERE inventory_id = #{inventoryId}
</delete>
</mapper>

View File

@@ -0,0 +1,79 @@
<?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.ruoyi.system.mapper.engineering.MaterialPickMapper">
<resultMap type="MaterialPick" id="MaterialPickResult">
<id property="pickId" column="pick_id" />
<result property="pickNo" column="pick_no" />
<result property="materialId" column="material_id" />
<result property="quantity" column="quantity" />
<result property="pickDate" column="pick_date" />
<result property="department" column="department" />
<result property="purpose" column="purpose" />
<result property="picker" column="picker" />
<result property="status" column="status" />
<result property="remark" column="remark" />
<result property="createBy" column="create_by" />
<result property="createTime" column="create_time" />
<result property="updateBy" column="update_by" />
<result property="updateTime" column="update_time" />
</resultMap>
<sql id="selectMaterialPickVo">
SELECT pick_id, pick_no, material_id, quantity, pick_date, department,
purpose, picker, status, remark, create_by, create_time, update_by, update_time
FROM engineering_material_pick
</sql>
<select id="selectMaterialPickList" parameterType="MaterialPick" resultMap="MaterialPickResult">
<include refid="selectMaterialPickVo"/>
<where>
<if test="pickNo != null and pickNo != ''">AND pick_no LIKE CONCAT('%', #{pickNo}, '%')</if>
<if test="materialId != null">AND material_id = #{materialId}</if>
<if test="department != null and department != ''">AND department LIKE CONCAT('%', #{department}, '%')</if>
<if test="status != null and status != ''">AND status = #{status}</if>
</where>
ORDER BY create_time DESC
</select>
<select id="selectMaterialPickById" parameterType="Long" resultMap="MaterialPickResult">
<include refid="selectMaterialPickVo"/>
WHERE pick_id = #{pickId}
</select>
<insert id="insertMaterialPick" parameterType="MaterialPick" useGeneratedKeys="true" keyProperty="pickId">
INSERT INTO engineering_material_pick (
pick_no, material_id, quantity, pick_date, department,
purpose, picker, status, remark, create_by, create_time, update_by, update_time
) VALUES (
#{pickNo}, #{materialId}, #{quantity}, #{pickDate}, #{department},
#{purpose}, #{picker}, #{status}, #{remark}, #{createBy}, #{createTime}, #{updateBy}, #{updateTime}
)
</insert>
<update id="updateMaterialPick" parameterType="MaterialPick">
UPDATE engineering_material_pick
SET pick_no = #{pickNo},
material_id = #{materialId},
quantity = #{quantity},
pick_date = #{pickDate},
department = #{department},
purpose = #{purpose},
picker = #{picker},
status = #{status},
remark = #{remark},
update_by = #{updateBy},
update_time = #{updateTime}
WHERE pick_id = #{pickId}
</update>
<update id="updateMaterialPickStatus">
UPDATE engineering_material_pick
SET status = #{status}
WHERE pick_id = #{pickId}
</update>
<delete id="deleteMaterialPickById" parameterType="Long">
DELETE FROM engineering_material_pick WHERE pick_id = #{pickId}
</delete>
</mapper>

View File

@@ -0,0 +1,74 @@
<?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.ruoyi.system.mapper.engineering.MaterialReturnBackMapper">
<resultMap type="MaterialReturnBack" id="MaterialReturnBackResult">
<id property="returnBackId" column="return_back_id" />
<result property="returnBackNo" column="return_back_no" />
<result property="materialId" column="material_id" />
<result property="quantity" column="quantity" />
<result property="returnBackDate" column="return_back_date" />
<result property="originalPickId" column="original_pick_id" />
<result property="status" column="status" />
<result property="remark" column="remark" />
<result property="createBy" column="create_by" />
<result property="createTime" column="create_time" />
<result property="updateBy" column="update_by" />
<result property="updateTime" column="update_time" />
</resultMap>
<sql id="selectMaterialReturnBackVo">
SELECT return_back_id, return_back_no, material_id, quantity, return_back_date, original_pick_id,
status, remark, create_by, create_time, update_by, update_time
FROM engineering_material_return_back
</sql>
<select id="selectMaterialReturnBackList" parameterType="MaterialReturnBack" resultMap="MaterialReturnBackResult">
<include refid="selectMaterialReturnBackVo"/>
<where>
<if test="returnBackNo != null and returnBackNo != ''">AND return_back_no LIKE CONCAT('%', #{returnBackNo}, '%')</if>
<if test="materialId != null">AND material_id = #{materialId}</if>
<if test="status != null and status != ''">AND status = #{status}</if>
</where>
ORDER BY create_time DESC
</select>
<select id="selectMaterialReturnBackById" parameterType="Long" resultMap="MaterialReturnBackResult">
<include refid="selectMaterialReturnBackVo"/>
WHERE return_back_id = #{returnBackId}
</select>
<insert id="insertMaterialReturnBack" parameterType="MaterialReturnBack" useGeneratedKeys="true" keyProperty="returnBackId">
INSERT INTO engineering_material_return_back (
return_back_no, material_id, quantity, return_back_date, original_pick_id,
status, remark, create_by, create_time, update_by, update_time
) VALUES (
#{returnBackNo}, #{materialId}, #{quantity}, #{returnBackDate}, #{originalPickId},
#{status}, #{remark}, #{createBy}, #{createTime}, #{updateBy}, #{updateTime}
)
</insert>
<update id="updateMaterialReturnBack" parameterType="MaterialReturnBack">
UPDATE engineering_material_return_back
SET return_back_no = #{returnBackNo},
material_id = #{materialId},
quantity = #{quantity},
return_back_date = #{returnBackDate},
original_pick_id = #{originalPickId},
status = #{status},
remark = #{remark},
update_by = #{updateBy},
update_time = #{updateTime}
WHERE return_back_id = #{returnBackId}
</update>
<update id="updateMaterialReturnBackStatus">
UPDATE engineering_material_return_back
SET status = #{status}
WHERE return_back_id = #{returnBackId}
</update>
<delete id="deleteMaterialReturnBackById" parameterType="Long">
DELETE FROM engineering_material_return_back WHERE return_back_id = #{returnBackId}
</delete>
</mapper>

View File

@@ -0,0 +1,77 @@
<?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.ruoyi.system.mapper.engineering.MaterialReturnMapper">
<resultMap type="MaterialReturn" id="MaterialReturnResult">
<id property="returnId" column="return_id" />
<result property="returnNo" column="return_no" />
<result property="materialId" column="material_id" />
<result property="quantity" column="quantity" />
<result property="returnDate" column="return_date" />
<result property="supplierId" column="supplier_id" />
<result property="returnReason" column="return_reason" />
<result property="status" column="status" />
<result property="remark" column="remark" />
<result property="createBy" column="create_by" />
<result property="createTime" column="create_time" />
<result property="updateBy" column="update_by" />
<result property="updateTime" column="update_time" />
</resultMap>
<sql id="selectMaterialReturnVo">
SELECT return_id, return_no, material_id, quantity, return_date, supplier_id,
return_reason, status, remark, create_by, create_time, update_by, update_time
FROM engineering_material_return
</sql>
<select id="selectMaterialReturnList" parameterType="MaterialReturn" resultMap="MaterialReturnResult">
<include refid="selectMaterialReturnVo"/>
<where>
<if test="returnNo != null and returnNo != ''">AND return_no LIKE CONCAT('%', #{returnNo}, '%')</if>
<if test="materialId != null">AND material_id = #{materialId}</if>
<if test="supplierId != null">AND supplier_id = #{supplierId}</if>
<if test="status != null and status != ''">AND status = #{status}</if>
</where>
ORDER BY create_time DESC
</select>
<select id="selectMaterialReturnById" parameterType="Long" resultMap="MaterialReturnResult">
<include refid="selectMaterialReturnVo"/>
WHERE return_id = #{returnId}
</select>
<insert id="insertMaterialReturn" parameterType="MaterialReturn" useGeneratedKeys="true" keyProperty="returnId">
INSERT INTO engineering_material_return (
return_no, material_id, quantity, return_date, supplier_id,
return_reason, status, remark, create_by, create_time, update_by, update_time
) VALUES (
#{returnNo}, #{materialId}, #{quantity}, #{returnDate}, #{supplierId},
#{returnReason}, #{status}, #{remark}, #{createBy}, #{createTime}, #{updateBy}, #{updateTime}
)
</insert>
<update id="updateMaterialReturn" parameterType="MaterialReturn">
UPDATE engineering_material_return
SET return_no = #{returnNo},
material_id = #{materialId},
quantity = #{quantity},
return_date = #{returnDate},
supplier_id = #{supplierId},
return_reason = #{returnReason},
status = #{status},
remark = #{remark},
update_by = #{updateBy},
update_time = #{updateTime}
WHERE return_id = #{returnId}
</update>
<update id="updateMaterialReturnStatus">
UPDATE engineering_material_return
SET status = #{status}
WHERE return_id = #{returnId}
</update>
<delete id="deleteMaterialReturnById" parameterType="Long">
DELETE FROM engineering_material_return WHERE return_id = #{returnId}
</delete>
</mapper>

View File

@@ -0,0 +1,79 @@
<?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.ruoyi.system.mapper.engineering.MaterialScrapMapper">
<resultMap type="MaterialScrap" id="MaterialScrapResult">
<id property="scrapId" column="scrap_id" />
<result property="scrapNo" column="scrap_no" />
<result property="materialId" column="material_id" />
<result property="quantity" column="quantity" />
<result property="scrapDate" column="scrap_date" />
<result property="scrapType" column="scrap_type" />
<result property="reason" column="reason" />
<result property="handleResult" column="handle_result" />
<result property="status" column="status" />
<result property="remark" column="remark" />
<result property="createBy" column="create_by" />
<result property="createTime" column="create_time" />
<result property="updateBy" column="update_by" />
<result property="updateTime" column="update_time" />
</resultMap>
<sql id="selectMaterialScrapVo">
SELECT scrap_id, scrap_no, material_id, quantity, scrap_date, scrap_type,
reason, handle_result, status, remark, create_by, create_time, update_by, update_time
FROM engineering_material_scrap
</sql>
<select id="selectMaterialScrapList" parameterType="MaterialScrap" resultMap="MaterialScrapResult">
<include refid="selectMaterialScrapVo"/>
<where>
<if test="scrapNo != null and scrapNo != ''">AND scrap_no LIKE CONCAT('%', #{scrapNo}, '%')</if>
<if test="materialId != null">AND material_id = #{materialId}</if>
<if test="scrapType != null and scrapType != ''">AND scrap_type = #{scrapType}</if>
<if test="status != null and status != ''">AND status = #{status}</if>
</where>
ORDER BY create_time DESC
</select>
<select id="selectMaterialScrapById" parameterType="Long" resultMap="MaterialScrapResult">
<include refid="selectMaterialScrapVo"/>
WHERE scrap_id = #{scrapId}
</select>
<insert id="insertMaterialScrap" parameterType="MaterialScrap" useGeneratedKeys="true" keyProperty="scrapId">
INSERT INTO engineering_material_scrap (
scrap_no, material_id, quantity, scrap_date, scrap_type,
reason, handle_result, status, remark, create_by, create_time, update_by, update_time
) VALUES (
#{scrapNo}, #{materialId}, #{quantity}, #{scrapDate}, #{scrapType},
#{reason}, #{handleResult}, #{status}, #{remark}, #{createBy}, #{createTime}, #{updateBy}, #{updateTime}
)
</insert>
<update id="updateMaterialScrap" parameterType="MaterialScrap">
UPDATE engineering_material_scrap
SET scrap_no = #{scrapNo},
material_id = #{materialId},
quantity = #{quantity},
scrap_date = #{scrapDate},
scrap_type = #{scrapType},
reason = #{reason},
handle_result = #{handleResult},
status = #{status},
remark = #{remark},
update_by = #{updateBy},
update_time = #{updateTime}
WHERE scrap_id = #{scrapId}
</update>
<update id="updateMaterialScrapStatus">
UPDATE engineering_material_scrap
SET status = #{status}
WHERE scrap_id = #{scrapId}
</update>
<delete id="deleteMaterialScrapById" parameterType="Long">
DELETE FROM engineering_material_scrap WHERE scrap_id = #{scrapId}
</delete>
</mapper>

View File

@@ -0,0 +1,79 @@
<?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.ruoyi.system.mapper.engineering.MaterialTransferMapper">
<resultMap type="MaterialTransfer" id="MaterialTransferResult">
<id property="transferId" column="transfer_id" />
<result property="transferNo" column="transfer_no" />
<result property="materialId" column="material_id" />
<result property="quantity" column="quantity" />
<result property="transferDate" column="transfer_date" />
<result property="fromProject" column="from_project" />
<result property="toProject" column="to_project" />
<result property="transferType" column="transfer_type" />
<result property="status" column="status" />
<result property="remark" column="remark" />
<result property="createBy" column="create_by" />
<result property="createTime" column="create_time" />
<result property="updateBy" column="update_by" />
<result property="updateTime" column="update_time" />
</resultMap>
<sql id="selectMaterialTransferVo">
SELECT transfer_id, transfer_no, material_id, quantity, transfer_date, from_project,
to_project, transfer_type, status, remark, create_by, create_time, update_by, update_time
FROM engineering_material_transfer
</sql>
<select id="selectMaterialTransferList" parameterType="MaterialTransfer" resultMap="MaterialTransferResult">
<include refid="selectMaterialTransferVo"/>
<where>
<if test="transferNo != null and transferNo != ''">AND transfer_no LIKE CONCAT('%', #{transferNo}, '%')</if>
<if test="materialId != null">AND material_id = #{materialId}</if>
<if test="transferType != null and transferType != ''">AND transfer_type = #{transferType}</if>
<if test="status != null and status != ''">AND status = #{status}</if>
</where>
ORDER BY create_time DESC
</select>
<select id="selectMaterialTransferById" parameterType="Long" resultMap="MaterialTransferResult">
<include refid="selectMaterialTransferVo"/>
WHERE transfer_id = #{transferId}
</select>
<insert id="insertMaterialTransfer" parameterType="MaterialTransfer" useGeneratedKeys="true" keyProperty="transferId">
INSERT INTO engineering_material_transfer (
transfer_no, material_id, quantity, transfer_date, from_project,
to_project, transfer_type, status, remark, create_by, create_time, update_by, update_time
) VALUES (
#{transferNo}, #{materialId}, #{quantity}, #{transferDate}, #{fromProject},
#{toProject}, #{transferType}, #{status}, #{remark}, #{createBy}, #{createTime}, #{updateBy}, #{updateTime}
)
</insert>
<update id="updateMaterialTransfer" parameterType="MaterialTransfer">
UPDATE engineering_material_transfer
SET transfer_no = #{transferNo},
material_id = #{materialId},
quantity = #{quantity},
transfer_date = #{transferDate},
from_project = #{fromProject},
to_project = #{toProject},
transfer_type = #{transferType},
status = #{status},
remark = #{remark},
update_by = #{updateBy},
update_time = #{updateTime}
WHERE transfer_id = #{transferId}
</update>
<update id="updateMaterialTransferStatus">
UPDATE engineering_material_transfer
SET status = #{status}
WHERE transfer_id = #{transferId}
</update>
<delete id="deleteMaterialTransferById" parameterType="Long">
DELETE FROM engineering_material_transfer WHERE transfer_id = #{transferId}
</delete>
</mapper>

View File

@@ -134,3 +134,317 @@ export function delMaterialOut(outId) {
method: 'delete'
})
}
export function listMaterialReturn(query) {
return request({
url: '/system/engineering/material/return/list',
method: 'get',
params: query
})
}
export function getMaterialReturn(returnId) {
return request({
url: '/system/engineering/material/return/' + returnId,
method: 'get'
})
}
export function addMaterialReturn(data) {
return request({
url: '/system/engineering/material/return',
method: 'post',
data: data
})
}
export function updateMaterialReturn(data) {
return request({
url: '/system/engineering/material/return',
method: 'put',
data: data
})
}
export function approveMaterialReturn(returnId) {
return request({
url: '/system/engineering/material/return/approve/' + returnId,
method: 'put'
})
}
export function delMaterialReturn(returnId) {
return request({
url: '/system/engineering/material/return/' + returnId,
method: 'delete'
})
}
export function listMaterialPick(query) {
return request({
url: '/system/engineering/material/pick/list',
method: 'get',
params: query
})
}
export function getMaterialPick(pickId) {
return request({
url: '/system/engineering/material/pick/' + pickId,
method: 'get'
})
}
export function addMaterialPick(data) {
return request({
url: '/system/engineering/material/pick',
method: 'post',
data: data
})
}
export function updateMaterialPick(data) {
return request({
url: '/system/engineering/material/pick',
method: 'put',
data: data
})
}
export function approveMaterialPick(pickId) {
return request({
url: '/system/engineering/material/pick/approve/' + pickId,
method: 'put'
})
}
export function issueMaterialPick(pickId) {
return request({
url: '/system/engineering/material/pick/issue/' + pickId,
method: 'put'
})
}
export function delMaterialPick(pickId) {
return request({
url: '/system/engineering/material/pick/' + pickId,
method: 'delete'
})
}
export function listMaterialReturnBack(query) {
return request({
url: '/system/engineering/material/returnBack/list',
method: 'get',
params: query
})
}
export function getMaterialReturnBack(returnBackId) {
return request({
url: '/system/engineering/material/returnBack/' + returnBackId,
method: 'get'
})
}
export function addMaterialReturnBack(data) {
return request({
url: '/system/engineering/material/returnBack',
method: 'post',
data: data
})
}
export function updateMaterialReturnBack(data) {
return request({
url: '/system/engineering/material/returnBack',
method: 'put',
data: data
})
}
export function approveMaterialReturnBack(returnBackId) {
return request({
url: '/system/engineering/material/returnBack/approve/' + returnBackId,
method: 'put'
})
}
export function delMaterialReturnBack(returnBackId) {
return request({
url: '/system/engineering/material/returnBack/' + returnBackId,
method: 'delete'
})
}
export function listMaterialTransfer(query) {
return request({
url: '/system/engineering/material/transfer/list',
method: 'get',
params: query
})
}
export function getMaterialTransfer(transferId) {
return request({
url: '/system/engineering/material/transfer/' + transferId,
method: 'get'
})
}
export function addMaterialTransfer(data) {
return request({
url: '/system/engineering/material/transfer',
method: 'post',
data: data
})
}
export function updateMaterialTransfer(data) {
return request({
url: '/system/engineering/material/transfer',
method: 'put',
data: data
})
}
export function approveMaterialTransfer(transferId) {
return request({
url: '/system/engineering/material/transfer/approve/' + transferId,
method: 'put'
})
}
export function delMaterialTransfer(transferId) {
return request({
url: '/system/engineering/material/transfer/' + transferId,
method: 'delete'
})
}
export function listMaterialInventory(query) {
return request({
url: '/system/engineering/material/inventory/list',
method: 'get',
params: query
})
}
export function getMaterialInventory(inventoryId) {
return request({
url: '/system/engineering/material/inventory/' + inventoryId,
method: 'get'
})
}
export function addMaterialInventory(data) {
return request({
url: '/system/engineering/material/inventory',
method: 'post',
data: data
})
}
export function updateMaterialInventory(data) {
return request({
url: '/system/engineering/material/inventory',
method: 'put',
data: data
})
}
export function completeMaterialInventory(inventoryId) {
return request({
url: '/system/engineering/material/inventory/complete/' + inventoryId,
method: 'put'
})
}
export function adjustMaterialInventory(inventoryId) {
return request({
url: '/system/engineering/material/inventory/adjust/' + inventoryId,
method: 'put'
})
}
export function delMaterialInventory(inventoryId) {
return request({
url: '/system/engineering/material/inventory/' + inventoryId,
method: 'delete'
})
}
export function getMaterialInventoryDetail(inventoryId) {
return request({
url: '/system/engineering/material/inventory/detail/' + inventoryId,
method: 'get'
})
}
export function addMaterialInventoryDetail(data) {
return request({
url: '/system/engineering/material/inventory/detail',
method: 'post',
data: data
})
}
export function updateMaterialInventoryDetail(data) {
return request({
url: '/system/engineering/material/inventory/detail',
method: 'put',
data: data
})
}
export function adjustMaterialInventoryDetail(detailId) {
return request({
url: '/system/engineering/material/inventory/detail/adjust/' + detailId,
method: 'put'
})
}
export function listMaterialScrap(query) {
return request({
url: '/system/engineering/material/scrap/list',
method: 'get',
params: query
})
}
export function getMaterialScrap(scrapId) {
return request({
url: '/system/engineering/material/scrap/' + scrapId,
method: 'get'
})
}
export function addMaterialScrap(data) {
return request({
url: '/system/engineering/material/scrap',
method: 'post',
data: data
})
}
export function updateMaterialScrap(data) {
return request({
url: '/system/engineering/material/scrap',
method: 'put',
data: data
})
}
export function approveMaterialScrap(scrapId) {
return request({
url: '/system/engineering/material/scrap/approve/' + scrapId,
method: 'put'
})
}
export function delMaterialScrap(scrapId) {
return request({
url: '/system/engineering/material/scrap/' + scrapId,
method: 'delete'
})
}

View File

@@ -1,14 +1,21 @@
<template>
<div class="image-preview-wrapper">
<el-image
:src="`${realSrc}`"
v-if="realSrc"
:src="realSrc"
fit="cover"
:style="`width:${realWidth};height:${realHeight};`"
:style="imageStyle"
:preview-src-list="realSrcList"
@error="handleImageError"
>
<div slot="error" class="image-slot">
<i class="el-icon-picture-outline"></i>
</div>
</el-image>
<div v-else class="image-slot default">
<i class="el-icon-picture-outline"></i>
</div>
</div>
</template>
<script>
@@ -30,10 +37,15 @@ export default {
default: ""
}
},
data() {
return {
imageError: false
}
},
computed: {
realSrc() {
if (!this.src) {
return
return null
}
let real_src = this.src.split(",")[0]
if (isExternal(real_src)) {
@@ -43,23 +55,30 @@ export default {
},
realSrcList() {
if (!this.src) {
return
return []
}
let real_src_list = this.src.split(",")
let srcList = []
real_src_list.forEach(item => {
if (isExternal(item)) {
return srcList.push(item)
srcList.push(item)
} else {
srcList.push(process.env.VUE_APP_BASE_API + item)
}
return srcList.push(process.env.VUE_APP_BASE_API + item)
})
return srcList
},
realWidth() {
return typeof this.width == "string" ? this.width : `${this.width}px`
imageStyle() {
return {
width: typeof this.width === "string" ? this.width : `${this.width}px`,
height: typeof this.height === "string" ? this.height : `${this.height}px`
}
}
},
realHeight() {
return typeof this.height == "string" ? this.height : `${this.height}px`
methods: {
handleImageError(e) {
this.imageError = true
console.warn("Image preview error:", e)
}
}
}

View File

@@ -41,7 +41,7 @@ export default {
}
},
methods: {
open(row) {
show(row) {
this.open = true
this.form = {
constructionId: row.constructionId,

View File

@@ -75,7 +75,7 @@ export default {
}
},
methods: {
open(row) {
show(row) {
this.open = true
this.title = row ? '修改施工节点' : '新增施工节点'
this.form = row ? { ...row } : { progress: 0, status: 'in_progress', parentId: 0 }

View File

@@ -1,6 +1,6 @@
<template>
<div class="app-container">
<el-form :model="queryParams" ref="queryForm" size="small" inline :label-width="100px">
<el-form :model="queryParams" ref="queryForm" size="small" inline label-width="100px">
<el-form-item label="合同" prop="contractId">
<el-select v-model="queryParams.contractId" placeholder="请选择合同" clearable>
<el-option v-for="contract in contractOptions" :key="contract.contractId" :label="contract.contractName" :value="contract.contractId" />

View File

@@ -74,7 +74,7 @@ export default {
this.supplierOptions = response.data
})
},
open(row) {
show(row) {
this.open = true
this.form = {
contractId: null,

View File

@@ -106,7 +106,7 @@ export default {
}
},
methods: {
open(contractId) {
show(contractId) {
this.open = true
getContractDetail(contractId).then(response => {
this.detail = response.data

View File

@@ -1,6 +1,6 @@
<template>
<div class="app-container">
<el-form :model="queryParams" ref="queryForm" size="small" inline :label-width="100px">
<el-form :model="queryParams" ref="queryForm" size="small" inline label-width="100px">
<el-form-item label="合同编号" prop="contractNo">
<el-input v-model="queryParams.contractNo" placeholder="请输入合同编号" clearable @keyup.enter.native="handleQuery" />
</el-form-item>

View File

@@ -0,0 +1,420 @@
<template>
<div class="app-container">
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
<el-form-item label="盘点单号" prop="inventoryNo">
<el-input v-model="queryParams.inventoryNo" placeholder="请输入盘点单号" clearable @keyup.enter.native="handleQuery" />
</el-form-item>
<el-form-item label="仓库" prop="warehouse">
<el-input v-model="queryParams.warehouse" placeholder="请输入仓库" clearable @keyup.enter.native="handleQuery" />
</el-form-item>
<el-form-item label="状态" prop="status">
<el-select v-model="queryParams.status" placeholder="请选择状态" clearable>
<el-option label="待盘点" value="pending" />
<el-option label="已完成" value="completed" />
<el-option label="已调整" value="adjusted" />
</el-select>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" @click="handleQuery">搜索</el-button>
<el-button icon="el-icon-refresh" @click="resetQuery">重置</el-button>
</el-form-item>
</el-form>
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button type="primary" plain icon="el-icon-plus" @click="handleAdd">新增盘点单</el-button>
</el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</el-row>
<el-table v-loading="loading" :data="inventoryList" border fit highlight-current-row>
<el-table-column label="盘点单号" prop="inventoryNo" />
<el-table-column label="仓库" prop="warehouse" />
<el-table-column label="盘点日期" prop="inventoryDate" />
<el-table-column label="盘点类型" prop="inventoryType">
<template slot-scope="scope">
<el-tag type="primary">{{ scope.row.inventoryType === 'full' ? '全面盘点' : '抽样盘点' }}</el-tag>
</template>
</el-table-column>
<el-table-column label="状态" prop="status">
<template slot-scope="scope">
<el-tag :type="scope.row.status === 'adjusted' ? 'success' : (scope.row.status === 'completed' ? 'primary' : 'warning')">
{{ scope.row.status === 'adjusted' ? '已调整' : (scope.row.status === 'completed' ? '已完成' : '待盘点') }}
</el-tag>
</template>
</el-table-column>
<el-table-column label="创建时间" prop="createTime" />
<el-table-column label="操作" align="center">
<template slot-scope="scope">
<el-button size="mini" icon="el-icon-edit" @click="handleEdit(scope.row)" v-if="scope.row.status === 'pending'">编辑</el-button>
<el-button size="mini" icon="el-icon-check" type="success" @click="handleComplete(scope.row)" v-if="scope.row.status === 'pending'">完成盘点</el-button>
<el-button size="mini" icon="el-icon-refresh" type="warning" @click="handleAdjust(scope.row)" v-if="scope.row.status === 'completed'">调整库存</el-button>
<el-button size="mini" icon="el-icon-delete" type="danger" @click="handleDelete(scope.row)" v-if="scope.row.status !== 'adjusted'">删除</el-button>
<el-button size="mini" icon="el-icon-list" @click="viewDetail(scope.row)">查看明细</el-button>
</template>
</el-table-column>
</el-table>
<pagination v-show="total>0" :total="total" :page.sync="queryParams.pageNum" :limit.sync="queryParams.pageSize" @pagination="getList" />
<el-dialog title="盘点单信息" :visible.sync="open" width="700px" append-to-body>
<el-form :model="form" ref="form" :rules="rules" label-width="100px">
<el-form-item label="盘点单号" prop="inventoryNo">
<el-input v-model="form.inventoryNo" placeholder="请输入盘点单号" />
</el-form-item>
<el-form-item label="盘点日期" prop="inventoryDate">
<el-date-picker v-model="form.inventoryDate" type="date" placeholder="请选择盘点日期" />
</el-form-item>
<el-form-item label="仓库" prop="warehouse">
<el-input v-model="form.warehouse" placeholder="请输入仓库" />
</el-form-item>
<el-form-item label="盘点类型" prop="inventoryType">
<el-radio-group v-model="form.inventoryType">
<el-radio label="full">全面盘点</el-radio>
<el-radio label="partial">抽样盘点</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="备注" prop="remark">
<el-textarea v-model="form.remark" placeholder="请输入备注" rows="3" />
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitForm"> </el-button>
<el-button @click="cancel"> </el-button>
</div>
</el-dialog>
<el-dialog title="盘点明细" :visible.sync="detailOpen" width="800px" append-to-body>
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button type="primary" plain icon="el-icon-plus" @click="addDetail">新增明细</el-button>
</el-col>
</el-row>
<el-table :data="detailList" border>
<el-table-column label="物料" prop="materialName" />
<el-table-column label="规格型号" prop="specification" />
<el-table-column label="系统库存" prop="systemStock" />
<el-table-column label="实际库存" prop="actualStock">
<template slot-scope="scope">
<el-input v-model="scope.row.actualStock" type="number" @change="updateDiff(scope.row)" v-if="currentInventory && currentInventory.status === 'pending'" />
<span v-else>{{ scope.row.actualStock }}</span>
</template>
</el-table-column>
<el-table-column label="差异数量" prop="diffQuantity">
<template slot-scope="scope">
<el-tag :type="scope.row.diffQuantity > 0 ? 'success' : (scope.row.diffQuantity < 0 ? 'danger' : '')">
{{ scope.row.diffQuantity || 0 }}
</el-tag>
</template>
</el-table-column>
<el-table-column label="状态" prop="status">
<template slot-scope="scope">
<el-tag :type="scope.row.status === 'adjusted' ? 'success' : 'warning'">
{{ scope.row.status === 'adjusted' ? '已调整' : '待调整' }}
</el-tag>
</template>
</el-table-column>
<el-table-column label="操作" align="center">
<template slot-scope="scope">
<el-button size="mini" icon="el-icon-edit" @click="editDetail(scope.row)" v-if="currentInventory && currentInventory.status === 'pending'">编辑</el-button>
<el-button size="mini" icon="el-icon-check" type="success" @click="adjustDetail(scope.row)" v-if="scope.row.status === 'pending' && scope.row.diffQuantity !== 0">调整</el-button>
<el-button size="mini" icon="el-icon-delete" type="danger" @click="deleteDetail(scope.row)" v-if="currentInventory && currentInventory.status === 'pending'">删除</el-button>
</template>
</el-table-column>
</el-table>
<div slot="footer" class="dialog-footer">
<el-button @click="detailOpen = false"> </el-button>
</div>
</el-dialog>
<el-dialog title="新增盘点明细" :visible.sync="detailFormOpen" width="600px" append-to-body>
<el-form :model="detailForm" ref="detailForm" :rules="detailRules" label-width="100px">
<el-form-item label="物料" prop="materialId">
<el-select v-model="detailForm.materialId" placeholder="请选择物料">
<el-option v-for="item in materialOptions" :key="item.materialId" :label="item.materialName + ' (' + item.materialCode + ') 库存:' + item.stock" :value="item.materialId" />
</el-select>
</el-form-item>
<el-form-item label="系统库存" prop="systemStock">
<el-input v-model="detailForm.systemStock" type="number" :disabled="true" />
</el-form-item>
<el-form-item label="实际库存" prop="actualStock">
<el-input v-model="detailForm.actualStock" type="number" placeholder="请输入实际库存" />
</el-form-item>
<el-form-item label="备注" prop="remark">
<el-textarea v-model="detailForm.remark" placeholder="请输入备注" rows="3" />
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitDetail"> </el-button>
<el-button @click="cancelDetail"> </el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import { listMaterialInventory, getMaterialInventory, addMaterialInventory, updateMaterialInventory, completeMaterialInventory, adjustMaterialInventory, delMaterialInventory, getMaterialInventoryDetail, addMaterialInventoryDetail, updateMaterialInventoryDetail, adjustMaterialInventoryDetail } from '@/api/engineering/material'
import { getMaterialOptions } from '@/api/engineering/material'
export default {
name: 'MaterialInventory',
data() {
return {
showSearch: true,
loading: false,
total: 0,
queryParams: {
pageNum: 1,
pageSize: 10,
inventoryNo: '',
warehouse: '',
status: ''
},
inventoryList: [],
materialOptions: [],
materialMap: {},
open: false,
detailOpen: false,
detailFormOpen: false,
form: {},
detailList: [],
detailForm: {},
currentInventory: null,
rules: {
inventoryNo: [
{ required: true, message: '盘点单号不能为空', trigger: 'blur' }
],
inventoryDate: [
{ required: true, message: '盘点日期不能为空', trigger: 'change' }
],
warehouse: [
{ required: true, message: '仓库不能为空', trigger: 'blur' }
]
},
detailRules: {
materialId: [
{ required: true, message: '请选择物料', trigger: 'change' }
],
actualStock: [
{ required: true, message: '实际库存不能为空', trigger: 'blur' }
]
}
}
},
created() {
this.getList()
this.getOptions()
},
methods: {
getList() {
this.loading = true
listMaterialInventory(this.queryParams).then(response => {
this.inventoryList = response.rows
this.total = response.total
this.loading = false
})
},
getOptions() {
getMaterialOptions().then(response => {
this.materialOptions = response.data
this.materialMap = {}
response.data.forEach(item => {
this.materialMap[item.materialId] = item
})
})
},
handleQuery() {
this.queryParams.pageNum = 1
this.getList()
},
resetQuery() {
this.queryParams = {
pageNum: 1,
pageSize: 10,
inventoryNo: '',
warehouse: '',
status: ''
}
this.getList()
},
handleAdd() {
this.open = true
this.form = { inventoryType: 'full' }
},
handleEdit(row) {
this.open = true
getMaterialInventory(row.inventoryId).then(response => {
this.form = response.data
})
},
handleDelete(row) {
this.$confirm('确定删除该盘点单吗?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
delMaterialInventory(row.inventoryId).then(response => {
if (response.code === 200) {
this.msgSuccess('删除成功')
this.getList()
} else {
this.msgError(response.msg)
}
})
})
},
handleComplete(row) {
this.$confirm('确定完成该盘点单吗?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
completeMaterialInventory(row.inventoryId).then(response => {
if (response.code === 200) {
this.msgSuccess('完成成功')
this.getList()
} else {
this.msgError(response.msg)
}
})
})
},
handleAdjust(row) {
this.$confirm('确定调整库存吗?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
adjustMaterialInventory(row.inventoryId).then(response => {
if (response.code === 200) {
this.msgSuccess('调整成功')
this.getList()
} else {
this.msgError(response.msg)
}
})
})
},
viewDetail(row) {
this.currentInventory = row
this.detailOpen = true
this.loadDetail(row.inventoryId)
},
loadDetail(inventoryId) {
getMaterialInventoryDetail(inventoryId).then(response => {
this.detailList = response.data || []
})
},
addDetail() {
this.detailForm = { inventoryId: this.currentInventory.inventoryId }
this.detailFormOpen = true
},
editDetail(row) {
this.detailForm = { ...row }
this.detailFormOpen = true
},
deleteDetail(row) {
this.$confirm('确定删除该明细吗?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
this.detailList = this.detailList.filter(item => item.detailId !== row.detailId)
this.msgSuccess('删除成功')
})
},
adjustDetail(row) {
this.$confirm('确定调整该物料库存吗?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
adjustMaterialInventoryDetail(row.detailId).then(response => {
if (response.code === 200) {
this.msgSuccess('调整成功')
this.loadDetail(this.currentInventory.inventoryId)
} else {
this.msgError(response.msg)
}
})
})
},
updateDiff(row) {
if (row.systemStock !== undefined && row.actualStock !== undefined) {
row.diffQuantity = (row.actualStock - row.systemStock) || 0
}
},
submitDetail() {
this.$refs['detailForm'].validate(valid => {
if (valid) {
const material = this.materialMap[this.detailForm.materialId]
if (material) {
this.detailForm.systemStock = material.stock
this.detailForm.diffQuantity = (this.detailForm.actualStock - material.stock) || 0
}
if (this.detailForm.detailId) {
updateMaterialInventoryDetail(this.detailForm).then(response => {
if (response.code === 200) {
this.msgSuccess('修改成功')
this.detailFormOpen = false
this.loadDetail(this.currentInventory.inventoryId)
} else {
this.msgError(response.msg)
}
})
} else {
addMaterialInventoryDetail(this.detailForm).then(response => {
if (response.code === 200) {
this.msgSuccess('新增成功')
this.detailFormOpen = false
this.loadDetail(this.currentInventory.inventoryId)
} else {
this.msgError(response.msg)
}
})
}
}
})
},
cancelDetail() {
this.detailFormOpen = false
this.detailForm = {}
},
submitForm() {
this.$refs['form'].validate(valid => {
if (valid) {
if (this.form.inventoryId) {
updateMaterialInventory(this.form).then(response => {
if (response.code === 200) {
this.msgSuccess('修改成功')
this.open = false
this.getList()
} else {
this.msgError(response.msg)
}
})
} else {
addMaterialInventory(this.form).then(response => {
if (response.code === 200) {
this.msgSuccess('新增成功')
this.open = false
this.getList()
} else {
this.msgError(response.msg)
}
})
}
}
})
},
cancel() {
this.open = false
this.form = {}
}
}
}
</script>
<style scoped>
</style>

View File

@@ -0,0 +1,269 @@
<template>
<div class="app-container">
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
<el-form-item label="领料单号" prop="pickNo">
<el-input v-model="queryParams.pickNo" placeholder="请输入领料单号" clearable @keyup.enter.native="handleQuery" />
</el-form-item>
<el-form-item label="物料名称" prop="materialName">
<el-input v-model="queryParams.materialName" placeholder="请输入物料名称" clearable @keyup.enter.native="handleQuery" />
</el-form-item>
<el-form-item label="状态" prop="status">
<el-select v-model="queryParams.status" placeholder="请选择状态" clearable>
<el-option label="待审核" value="pending" />
<el-option label="已审核" value="approved" />
<el-option label="已发放" value="issued" />
</el-select>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" @click="handleQuery">搜索</el-button>
<el-button icon="el-icon-refresh" @click="resetQuery">重置</el-button>
</el-form-item>
</el-form>
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button type="primary" plain icon="el-icon-plus" @click="handleAdd">新增领料单</el-button>
</el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</el-row>
<el-table v-loading="loading" :data="pickList" border fit highlight-current-row>
<el-table-column label="领料单号" prop="pickNo" />
<el-table-column label="物料" prop="materialName" />
<el-table-column label="规格型号" prop="specification" />
<el-table-column label="领料数量" prop="quantity" />
<el-table-column label="领料日期" prop="pickDate" />
<el-table-column label="领用部门" prop="deptName" />
<el-table-column label="领用人" prop="receiver" />
<el-table-column label="用途" prop="usePurpose" />
<el-table-column label="状态" prop="status">
<template slot-scope="scope">
<el-tag :type="scope.row.status === 'issued' ? 'success' : (scope.row.status === 'approved' ? 'primary' : 'warning')">
{{ scope.row.status === 'issued' ? '已发放' : (scope.row.status === 'approved' ? '已审核' : '待审核') }}
</el-tag>
</template>
</el-table-column>
<el-table-column label="创建时间" prop="createTime" />
<el-table-column label="操作" align="center">
<template slot-scope="scope">
<el-button size="mini" icon="el-icon-edit" @click="handleEdit(scope.row)" v-if="scope.row.status === 'pending'">编辑</el-button>
<el-button size="mini" icon="el-icon-check" type="success" @click="handleApprove(scope.row)" v-if="scope.row.status === 'pending'">审核</el-button>
<el-button size="mini" icon="el-icon-send" type="primary" @click="handleIssue(scope.row)" v-if="scope.row.status === 'approved'">发放</el-button>
<el-button size="mini" icon="el-icon-delete" type="danger" @click="handleDelete(scope.row)" v-if="scope.row.status !== 'issued'">删除</el-button>
</template>
</el-table-column>
</el-table>
<pagination v-show="total>0" :total="total" :page.sync="queryParams.pageNum" :limit.sync="queryParams.pageSize" @pagination="getList" />
<el-dialog title="领料单信息" :visible.sync="open" width="700px" append-to-body>
<el-form :model="form" ref="form" :rules="rules" label-width="100px">
<el-form-item label="领料单号" prop="pickNo">
<el-input v-model="form.pickNo" placeholder="请输入领料单号" />
</el-form-item>
<el-form-item label="物料" prop="materialId">
<el-select v-model="form.materialId" placeholder="请选择物料" @change="onMaterialChange">
<el-option v-for="item in materialOptions" :key="item.materialId" :label="item.materialName + ' (' + item.materialCode + ') 库存:' + item.stock" :value="item.materialId" />
</el-select>
</el-form-item>
<el-form-item label="领料数量" prop="quantity">
<el-input v-model="form.quantity" type="number" placeholder="请输入领料数量" />
</el-form-item>
<el-form-item label="领料日期" prop="pickDate">
<el-date-picker v-model="form.pickDate" type="date" placeholder="请选择领料日期" />
</el-form-item>
<el-form-item label="领用部门" prop="deptName">
<el-input v-model="form.deptName" placeholder="请输入领用部门" />
</el-form-item>
<el-form-item label="领用人" prop="receiver">
<el-input v-model="form.receiver" placeholder="请输入领用人" />
</el-form-item>
<el-form-item label="用途" prop="usePurpose">
<el-textarea v-model="form.usePurpose" placeholder="请输入用途" rows="3" />
</el-form-item>
<el-form-item label="备注" prop="remark">
<el-textarea v-model="form.remark" placeholder="请输入备注" rows="3" />
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitForm"> </el-button>
<el-button @click="cancel"> </el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import { listMaterialPick, getMaterialPick, addMaterialPick, updateMaterialPick, approveMaterialPick, issueMaterialPick, delMaterialPick } from '@/api/engineering/material'
import { getMaterialOptions } from '@/api/engineering/material'
export default {
name: 'MaterialPick',
data() {
return {
showSearch: true,
loading: false,
total: 0,
queryParams: {
pageNum: 1,
pageSize: 10,
pickNo: '',
materialName: '',
status: ''
},
pickList: [],
materialOptions: [],
open: false,
form: {},
rules: {
pickNo: [
{ required: true, message: '领料单号不能为空', trigger: 'blur' }
],
materialId: [
{ required: true, message: '请选择物料', trigger: 'change' }
],
quantity: [
{ required: true, message: '领料数量不能为空', trigger: 'blur' }
],
pickDate: [
{ required: true, message: '领料日期不能为空', trigger: 'change' }
],
deptName: [
{ required: true, message: '领用部门不能为空', trigger: 'blur' }
],
receiver: [
{ required: true, message: '领用人不能为空', trigger: 'blur' }
]
}
}
},
created() {
this.getList()
this.getOptions()
},
methods: {
getList() {
this.loading = true
listMaterialPick(this.queryParams).then(response => {
this.pickList = response.rows
this.total = response.total
this.loading = false
})
},
getOptions() {
getMaterialOptions().then(response => {
this.materialOptions = response.data
})
},
handleQuery() {
this.queryParams.pageNum = 1
this.getList()
},
resetQuery() {
this.queryParams = {
pageNum: 1,
pageSize: 10,
pickNo: '',
materialName: '',
status: ''
}
this.getList()
},
handleAdd() {
this.open = true
this.form = {}
this.getOptions()
},
handleEdit(row) {
this.open = true
getMaterialPick(row.pickId).then(response => {
this.form = response.data
})
},
handleDelete(row) {
this.$confirm('确定删除该领料单吗?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
delMaterialPick(row.pickId).then(response => {
if (response.code === 200) {
this.msgSuccess('删除成功')
this.getList()
} else {
this.msgError(response.msg)
}
})
})
},
handleApprove(row) {
this.$confirm('确定审核该领料单吗?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
approveMaterialPick(row.pickId).then(response => {
if (response.code === 200) {
this.msgSuccess('审核成功')
this.getList()
} else {
this.msgError(response.msg)
}
})
})
},
handleIssue(row) {
this.$confirm('确定发放该领料单吗?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
issueMaterialPick(row.pickId).then(response => {
if (response.code === 200) {
this.msgSuccess('发放成功')
this.getList()
} else {
this.msgError(response.msg)
}
})
})
},
onMaterialChange() {
},
submitForm() {
this.$refs['form'].validate(valid => {
if (valid) {
if (this.form.pickId) {
updateMaterialPick(this.form).then(response => {
if (response.code === 200) {
this.msgSuccess('修改成功')
this.open = false
this.getList()
} else {
this.msgError(response.msg)
}
})
} else {
addMaterialPick(this.form).then(response => {
if (response.code === 200) {
this.msgSuccess('新增成功')
this.open = false
this.getList()
} else {
this.msgError(response.msg)
}
})
}
}
})
},
cancel() {
this.open = false
this.form = {}
}
}
}
</script>
<style scoped>
</style>

View File

@@ -0,0 +1,248 @@
<template>
<div class="app-container">
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
<el-form-item label="退货单号" prop="returnNo">
<el-input v-model="queryParams.returnNo" placeholder="请输入退货单号" clearable @keyup.enter.native="handleQuery" />
</el-form-item>
<el-form-item label="物料名称" prop="materialName">
<el-input v-model="queryParams.materialName" placeholder="请输入物料名称" clearable @keyup.enter.native="handleQuery" />
</el-form-item>
<el-form-item label="状态" prop="status">
<el-select v-model="queryParams.status" placeholder="请选择状态" clearable>
<el-option label="待审核" value="pending" />
<el-option label="已审核" value="approved" />
</el-select>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" @click="handleQuery">搜索</el-button>
<el-button icon="el-icon-refresh" @click="resetQuery">重置</el-button>
</el-form-item>
</el-form>
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button type="primary" plain icon="el-icon-plus" @click="handleAdd">新增退货单</el-button>
</el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</el-row>
<el-table v-loading="loading" :data="returnList" border fit highlight-current-row>
<el-table-column label="退货单号" prop="returnNo" />
<el-table-column label="物料" prop="materialName" />
<el-table-column label="规格型号" prop="specification" />
<el-table-column label="退货数量" prop="quantity" />
<el-table-column label="退货日期" prop="returnDate" />
<el-table-column label="供应商" prop="supplierName" />
<el-table-column label="退货原因" prop="returnReason" />
<el-table-column label="状态" prop="status">
<template slot-scope="scope">
<el-tag :type="scope.row.status === 'approved' ? 'success' : 'warning'">
{{ scope.row.status === 'approved' ? '已审核' : '待审核' }}
</el-tag>
</template>
</el-table-column>
<el-table-column label="创建时间" prop="createTime" />
<el-table-column label="操作" align="center">
<template slot-scope="scope">
<el-button size="mini" icon="el-icon-edit" @click="handleEdit(scope.row)" v-if="scope.row.status === 'pending'">编辑</el-button>
<el-button size="mini" icon="el-icon-check" type="success" @click="handleApprove(scope.row)" v-if="scope.row.status === 'pending'">审核</el-button>
<el-button size="mini" icon="el-icon-delete" type="danger" @click="handleDelete(scope.row)">删除</el-button>
</template>
</el-table-column>
</el-table>
<pagination v-show="total>0" :total="total" :page.sync="queryParams.pageNum" :limit.sync="queryParams.pageSize" @pagination="getList" />
<el-dialog title="退货单信息" :visible.sync="open" width="700px" append-to-body>
<el-form :model="form" ref="form" :rules="rules" label-width="100px">
<el-form-item label="退货单号" prop="returnNo">
<el-input v-model="form.returnNo" placeholder="请输入退货单号" />
</el-form-item>
<el-form-item label="物料" prop="materialId">
<el-select v-model="form.materialId" placeholder="请选择物料" @change="onMaterialChange">
<el-option v-for="item in materialOptions" :key="item.materialId" :label="item.materialName + ' (' + item.materialCode + ')'" :value="item.materialId" />
</el-select>
</el-form-item>
<el-form-item label="退货数量" prop="quantity">
<el-input v-model="form.quantity" type="number" placeholder="请输入退货数量" />
</el-form-item>
<el-form-item label="退货日期" prop="returnDate">
<el-date-picker v-model="form.returnDate" type="date" placeholder="请选择退货日期" />
</el-form-item>
<el-form-item label="供应商" prop="supplierId">
<el-select v-model="form.supplierId" placeholder="请选择供应商">
<el-option v-for="item in supplierOptions" :key="item.supplierId" :label="item.supplierName" :value="item.supplierId" />
</el-select>
</el-form-item>
<el-form-item label="退货原因" prop="returnReason">
<el-textarea v-model="form.returnReason" placeholder="请输入退货原因" rows="3" />
</el-form-item>
<el-form-item label="备注" prop="remark">
<el-textarea v-model="form.remark" placeholder="请输入备注" rows="3" />
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitForm"> </el-button>
<el-button @click="cancel"> </el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import { listMaterialReturn, getMaterialReturn, addMaterialReturn, updateMaterialReturn, approveMaterialReturn, delMaterialReturn } from '@/api/engineering/material'
import { getMaterialOptions } from '@/api/engineering/material'
import { getSupplierOptions } from '@/api/engineering/supplier'
export default {
name: 'MaterialReturn',
data() {
return {
showSearch: true,
loading: false,
total: 0,
queryParams: {
pageNum: 1,
pageSize: 10,
returnNo: '',
materialName: '',
status: ''
},
returnList: [],
materialOptions: [],
supplierOptions: [],
open: false,
form: {},
rules: {
returnNo: [
{ required: true, message: '退货单号不能为空', trigger: 'blur' }
],
materialId: [
{ required: true, message: '请选择物料', trigger: 'change' }
],
quantity: [
{ required: true, message: '退货数量不能为空', trigger: 'blur' }
],
returnDate: [
{ required: true, message: '退货日期不能为空', trigger: 'change' }
]
}
}
},
created() {
this.getList()
this.getOptions()
},
methods: {
getList() {
this.loading = true
listMaterialReturn(this.queryParams).then(response => {
this.returnList = response.rows
this.total = response.total
this.loading = false
})
},
getOptions() {
getMaterialOptions().then(response => {
this.materialOptions = response.data
})
getSupplierOptions().then(response => {
this.supplierOptions = response.data
})
},
handleQuery() {
this.queryParams.pageNum = 1
this.getList()
},
resetQuery() {
this.queryParams = {
pageNum: 1,
pageSize: 10,
returnNo: '',
materialName: '',
status: ''
}
this.getList()
},
handleAdd() {
this.open = true
this.form = {}
this.getOptions()
},
handleEdit(row) {
this.open = true
getMaterialReturn(row.returnId).then(response => {
this.form = response.data
})
},
handleDelete(row) {
this.$confirm('确定删除该退货单吗?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
delMaterialReturn(row.returnId).then(response => {
if (response.code === 200) {
this.msgSuccess('删除成功')
this.getList()
} else {
this.msgError(response.msg)
}
})
})
},
handleApprove(row) {
this.$confirm('确定审核该退货单吗?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
approveMaterialReturn(row.returnId).then(response => {
if (response.code === 200) {
this.msgSuccess('审核成功')
this.getList()
} else {
this.msgError(response.msg)
}
})
})
},
onMaterialChange() {
},
submitForm() {
this.$refs['form'].validate(valid => {
if (valid) {
if (this.form.returnId) {
updateMaterialReturn(this.form).then(response => {
if (response.code === 200) {
this.msgSuccess('修改成功')
this.open = false
this.getList()
} else {
this.msgError(response.msg)
}
})
} else {
addMaterialReturn(this.form).then(response => {
if (response.code === 200) {
this.msgSuccess('新增成功')
this.open = false
this.getList()
} else {
this.msgError(response.msg)
}
})
}
}
})
},
cancel() {
this.open = false
this.form = {}
}
}
}
</script>
<style scoped>
</style>

View File

@@ -0,0 +1,244 @@
<template>
<div class="app-container">
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
<el-form-item label="还料单号" prop="returnBackNo">
<el-input v-model="queryParams.returnBackNo" placeholder="请输入还料单号" clearable @keyup.enter.native="handleQuery" />
</el-form-item>
<el-form-item label="物料名称" prop="materialName">
<el-input v-model="queryParams.materialName" placeholder="请输入物料名称" clearable @keyup.enter.native="handleQuery" />
</el-form-item>
<el-form-item label="状态" prop="status">
<el-select v-model="queryParams.status" placeholder="请选择状态" clearable>
<el-option label="待审核" value="pending" />
<el-option label="已审核" value="approved" />
</el-select>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" @click="handleQuery">搜索</el-button>
<el-button icon="el-icon-refresh" @click="resetQuery">重置</el-button>
</el-form-item>
</el-form>
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button type="primary" plain icon="el-icon-plus" @click="handleAdd">新增还料单</el-button>
</el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</el-row>
<el-table v-loading="loading" :data="returnBackList" border fit highlight-current-row>
<el-table-column label="还料单号" prop="returnBackNo" />
<el-table-column label="关联领料单" prop="pickNo" />
<el-table-column label="物料" prop="materialName" />
<el-table-column label="规格型号" prop="specification" />
<el-table-column label="还料数量" prop="quantity" />
<el-table-column label="还料日期" prop="returnBackDate" />
<el-table-column label="状态" prop="status">
<template slot-scope="scope">
<el-tag :type="scope.row.status === 'approved' ? 'success' : 'warning'">
{{ scope.row.status === 'approved' ? '已审核' : '待审核' }}
</el-tag>
</template>
</el-table-column>
<el-table-column label="创建时间" prop="createTime" />
<el-table-column label="操作" align="center">
<template slot-scope="scope">
<el-button size="mini" icon="el-icon-edit" @click="handleEdit(scope.row)" v-if="scope.row.status === 'pending'">编辑</el-button>
<el-button size="mini" icon="el-icon-check" type="success" @click="handleApprove(scope.row)" v-if="scope.row.status === 'pending'">审核</el-button>
<el-button size="mini" icon="el-icon-delete" type="danger" @click="handleDelete(scope.row)">删除</el-button>
</template>
</el-table-column>
</el-table>
<pagination v-show="total>0" :total="total" :page.sync="queryParams.pageNum" :limit.sync="queryParams.pageSize" @pagination="getList" />
<el-dialog title="还料单信息" :visible.sync="open" width="700px" append-to-body>
<el-form :model="form" ref="form" :rules="rules" label-width="100px">
<el-form-item label="还料单号" prop="returnBackNo">
<el-input v-model="form.returnBackNo" placeholder="请输入还料单号" />
</el-form-item>
<el-form-item label="关联领料单" prop="pickId">
<el-select v-model="form.pickId" placeholder="请选择关联领料单">
<el-option v-for="item in pickOptions" :key="item.pickId" :label="item.pickNo" :value="item.pickId" />
</el-select>
</el-form-item>
<el-form-item label="物料" prop="materialId">
<el-select v-model="form.materialId" placeholder="请选择物料" @change="onMaterialChange">
<el-option v-for="item in materialOptions" :key="item.materialId" :label="item.materialName + ' (' + item.materialCode + ')'" :value="item.materialId" />
</el-select>
</el-form-item>
<el-form-item label="还料数量" prop="quantity">
<el-input v-model="form.quantity" type="number" placeholder="请输入还料数量" />
</el-form-item>
<el-form-item label="还料日期" prop="returnBackDate">
<el-date-picker v-model="form.returnBackDate" type="date" placeholder="请选择还料日期" />
</el-form-item>
<el-form-item label="备注" prop="remark">
<el-textarea v-model="form.remark" placeholder="请输入备注" rows="3" />
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitForm"> </el-button>
<el-button @click="cancel"> </el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import { listMaterialReturnBack, getMaterialReturnBack, addMaterialReturnBack, updateMaterialReturnBack, approveMaterialReturnBack, delMaterialReturnBack } from '@/api/engineering/material'
import { getMaterialOptions } from '@/api/engineering/material'
import { listMaterialPick } from '@/api/engineering/material'
export default {
name: 'MaterialReturnBack',
data() {
return {
showSearch: true,
loading: false,
total: 0,
queryParams: {
pageNum: 1,
pageSize: 10,
returnBackNo: '',
materialName: '',
status: ''
},
returnBackList: [],
materialOptions: [],
pickOptions: [],
open: false,
form: {},
rules: {
returnBackNo: [
{ required: true, message: '还料单号不能为空', trigger: 'blur' }
],
materialId: [
{ required: true, message: '请选择物料', trigger: 'change' }
],
quantity: [
{ required: true, message: '还料数量不能为空', trigger: 'blur' }
],
returnBackDate: [
{ required: true, message: '还料日期不能为空', trigger: 'change' }
]
}
}
},
created() {
this.getList()
this.getOptions()
},
methods: {
getList() {
this.loading = true
listMaterialReturnBack(this.queryParams).then(response => {
this.returnBackList = response.rows
this.total = response.total
this.loading = false
})
},
getOptions() {
getMaterialOptions().then(response => {
this.materialOptions = response.data
})
listMaterialPick({}).then(response => {
this.pickOptions = response.rows || []
})
},
handleQuery() {
this.queryParams.pageNum = 1
this.getList()
},
resetQuery() {
this.queryParams = {
pageNum: 1,
pageSize: 10,
returnBackNo: '',
materialName: '',
status: ''
}
this.getList()
},
handleAdd() {
this.open = true
this.form = {}
this.getOptions()
},
handleEdit(row) {
this.open = true
getMaterialReturnBack(row.returnBackId).then(response => {
this.form = response.data
})
},
handleDelete(row) {
this.$confirm('确定删除该还料单吗?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
delMaterialReturnBack(row.returnBackId).then(response => {
if (response.code === 200) {
this.msgSuccess('删除成功')
this.getList()
} else {
this.msgError(response.msg)
}
})
})
},
handleApprove(row) {
this.$confirm('确定审核该还料单吗?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
approveMaterialReturnBack(row.returnBackId).then(response => {
if (response.code === 200) {
this.msgSuccess('审核成功')
this.getList()
} else {
this.msgError(response.msg)
}
})
})
},
onMaterialChange() {
},
submitForm() {
this.$refs['form'].validate(valid => {
if (valid) {
if (this.form.returnBackId) {
updateMaterialReturnBack(this.form).then(response => {
if (response.code === 200) {
this.msgSuccess('修改成功')
this.open = false
this.getList()
} else {
this.msgError(response.msg)
}
})
} else {
addMaterialReturnBack(this.form).then(response => {
if (response.code === 200) {
this.msgSuccess('新增成功')
this.open = false
this.getList()
} else {
this.msgError(response.msg)
}
})
}
}
})
},
cancel() {
this.open = false
this.form = {}
}
}
}
</script>
<style scoped>
</style>

View File

@@ -0,0 +1,272 @@
<template>
<div class="app-container">
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
<el-form-item label="单据号" prop="scrapNo">
<el-input v-model="queryParams.scrapNo" placeholder="请输入单据号" clearable @keyup.enter.native="handleQuery" />
</el-form-item>
<el-form-item label="物料名称" prop="materialName">
<el-input v-model="queryParams.materialName" placeholder="请输入物料名称" clearable @keyup.enter.native="handleQuery" />
</el-form-item>
<el-form-item label="异常类型" prop="scrapType">
<el-select v-model="queryParams.scrapType" placeholder="请选择异常类型" clearable>
<el-option label="报损" value="scrap" />
<el-option label="报溢" value="overflow" />
</el-select>
</el-form-item>
<el-form-item label="状态" prop="status">
<el-select v-model="queryParams.status" placeholder="请选择状态" clearable>
<el-option label="待审核" value="pending" />
<el-option label="已审核" value="approved" />
</el-select>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" @click="handleQuery">搜索</el-button>
<el-button icon="el-icon-refresh" @click="resetQuery">重置</el-button>
</el-form-item>
</el-form>
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button type="primary" plain icon="el-icon-plus" @click="handleAdd">新增报损报溢</el-button>
</el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</el-row>
<el-table v-loading="loading" :data="scrapList" border fit highlight-current-row>
<el-table-column label="单据号" prop="scrapNo" />
<el-table-column label="物料" prop="materialName" />
<el-table-column label="规格型号" prop="specification" />
<el-table-column label="数量" prop="quantity" />
<el-table-column label="异常类型" prop="scrapType">
<template slot-scope="scope">
<el-tag :type="scope.row.scrapType === 'scrap' ? 'danger' : 'success'">
{{ scope.row.scrapType === 'scrap' ? '报损' : '报溢' }}
</el-tag>
</template>
</el-table-column>
<el-table-column label="异常日期" prop="scrapDate" />
<el-table-column label="原因" prop="reason" />
<el-table-column label="处理人" prop="handler" />
<el-table-column label="状态" prop="status">
<template slot-scope="scope">
<el-tag :type="scope.row.status === 'approved' ? 'success' : 'warning'">
{{ scope.row.status === 'approved' ? '已审核' : '待审核' }}
</el-tag>
</template>
</el-table-column>
<el-table-column label="创建时间" prop="createTime" />
<el-table-column label="操作" align="center">
<template slot-scope="scope">
<el-button size="mini" icon="el-icon-edit" @click="handleEdit(scope.row)" v-if="scope.row.status === 'pending'">编辑</el-button>
<el-button size="mini" icon="el-icon-check" type="success" @click="handleApprove(scope.row)" v-if="scope.row.status === 'pending'">审核</el-button>
<el-button size="mini" icon="el-icon-delete" type="danger" @click="handleDelete(scope.row)">删除</el-button>
</template>
</el-table-column>
</el-table>
<pagination v-show="total>0" :total="total" :page.sync="queryParams.pageNum" :limit.sync="queryParams.pageSize" @pagination="getList" />
<el-dialog title="报损报溢信息" :visible.sync="open" width="700px" append-to-body>
<el-form :model="form" ref="form" :rules="rules" label-width="100px">
<el-form-item label="单据号" prop="scrapNo">
<el-input v-model="form.scrapNo" placeholder="请输入单据号" />
</el-form-item>
<el-form-item label="物料" prop="materialId">
<el-select v-model="form.materialId" placeholder="请选择物料" @change="onMaterialChange">
<el-option v-for="item in materialOptions" :key="item.materialId" :label="item.materialName + ' (' + item.materialCode + ') 库存:' + item.stock" :value="item.materialId" />
</el-select>
</el-form-item>
<el-form-item label="数量" prop="quantity">
<el-input v-model="form.quantity" type="number" placeholder="请输入数量" />
</el-form-item>
<el-form-item label="异常类型" prop="scrapType">
<el-radio-group v-model="form.scrapType">
<el-radio label="scrap">报损</el-radio>
<el-radio label="overflow">报溢</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="异常日期" prop="scrapDate">
<el-date-picker v-model="form.scrapDate" type="date" placeholder="请选择异常日期" />
</el-form-item>
<el-form-item label="原因" prop="reason">
<el-textarea v-model="form.reason" placeholder="请输入异常原因" rows="3" />
</el-form-item>
<el-form-item label="处理人" prop="handler">
<el-input v-model="form.handler" placeholder="请输入处理人" />
</el-form-item>
<el-form-item label="备注" prop="remark">
<el-textarea v-model="form.remark" placeholder="请输入备注" rows="3" />
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitForm"> </el-button>
<el-button @click="cancel"> </el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import { listMaterialScrap, getMaterialScrap, addMaterialScrap, updateMaterialScrap, approveMaterialScrap, delMaterialScrap } from '@/api/engineering/material'
import { getMaterialOptions } from '@/api/engineering/material'
export default {
name: 'MaterialScrap',
data() {
return {
showSearch: true,
loading: false,
total: 0,
queryParams: {
pageNum: 1,
pageSize: 10,
scrapNo: '',
materialName: '',
scrapType: '',
status: ''
},
scrapList: [],
materialOptions: [],
open: false,
form: {},
rules: {
scrapNo: [
{ required: true, message: '单据号不能为空', trigger: 'blur' }
],
materialId: [
{ required: true, message: '请选择物料', trigger: 'change' }
],
quantity: [
{ required: true, message: '数量不能为空', trigger: 'blur' }
],
scrapType: [
{ required: true, message: '请选择异常类型', trigger: 'change' }
],
scrapDate: [
{ required: true, message: '异常日期不能为空', trigger: 'change' }
],
reason: [
{ required: true, message: '原因不能为空', trigger: 'blur' }
],
handler: [
{ required: true, message: '处理人不能为空', trigger: 'blur' }
]
}
}
},
created() {
this.getList()
this.getOptions()
},
methods: {
getList() {
this.loading = true
listMaterialScrap(this.queryParams).then(response => {
this.scrapList = response.rows
this.total = response.total
this.loading = false
})
},
getOptions() {
getMaterialOptions().then(response => {
this.materialOptions = response.data
})
},
handleQuery() {
this.queryParams.pageNum = 1
this.getList()
},
resetQuery() {
this.queryParams = {
pageNum: 1,
pageSize: 10,
scrapNo: '',
materialName: '',
scrapType: '',
status: ''
}
this.getList()
},
handleAdd() {
this.open = true
this.form = {}
this.getOptions()
},
handleEdit(row) {
this.open = true
getMaterialScrap(row.scrapId).then(response => {
this.form = response.data
})
},
handleDelete(row) {
this.$confirm('确定删除该报损报溢单吗?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
delMaterialScrap(row.scrapId).then(response => {
if (response.code === 200) {
this.msgSuccess('删除成功')
this.getList()
} else {
this.msgError(response.msg)
}
})
})
},
handleApprove(row) {
const typeText = row.scrapType === 'scrap' ? '报损' : '报溢'
this.$confirm('确定审核该' + typeText + '单吗?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
approveMaterialScrap(row.scrapId).then(response => {
if (response.code === 200) {
this.msgSuccess('审核成功')
this.getList()
} else {
this.msgError(response.msg)
}
})
})
},
onMaterialChange() {
},
submitForm() {
this.$refs['form'].validate(valid => {
if (valid) {
if (this.form.scrapId) {
updateMaterialScrap(this.form).then(response => {
if (response.code === 200) {
this.msgSuccess('修改成功')
this.open = false
this.getList()
} else {
this.msgError(response.msg)
}
})
} else {
addMaterialScrap(this.form).then(response => {
if (response.code === 200) {
this.msgSuccess('新增成功')
this.open = false
this.getList()
} else {
this.msgError(response.msg)
}
})
}
}
})
},
cancel() {
this.open = false
this.form = {}
}
}
}
</script>
<style scoped>
</style>

View File

@@ -0,0 +1,271 @@
<template>
<div class="app-container">
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
<el-form-item label="调拨单号" prop="transferNo">
<el-input v-model="queryParams.transferNo" placeholder="请输入调拨单号" clearable @keyup.enter.native="handleQuery" />
</el-form-item>
<el-form-item label="物料名称" prop="materialName">
<el-input v-model="queryParams.materialName" placeholder="请输入物料名称" clearable @keyup.enter.native="handleQuery" />
</el-form-item>
<el-form-item label="调拨类型" prop="transferType">
<el-select v-model="queryParams.transferType" placeholder="请选择调拨类型" clearable>
<el-option label="调拨出库" value="out" />
<el-option label="调拨入库" value="in" />
</el-select>
</el-form-item>
<el-form-item label="状态" prop="status">
<el-select v-model="queryParams.status" placeholder="请选择状态" clearable>
<el-option label="待审核" value="pending" />
<el-option label="已审核" value="approved" />
</el-select>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" @click="handleQuery">搜索</el-button>
<el-button icon="el-icon-refresh" @click="resetQuery">重置</el-button>
</el-form-item>
</el-form>
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button type="primary" plain icon="el-icon-plus" @click="handleAdd">新增调拨单</el-button>
</el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</el-row>
<el-table v-loading="loading" :data="transferList" border fit highlight-current-row>
<el-table-column label="调拨单号" prop="transferNo" />
<el-table-column label="物料" prop="materialName" />
<el-table-column label="规格型号" prop="specification" />
<el-table-column label="调拨数量" prop="quantity" />
<el-table-column label="调出项目" prop="fromProject" />
<el-table-column label="调入项目" prop="toProject" />
<el-table-column label="调拨日期" prop="transferDate" />
<el-table-column label="调拨类型" prop="transferType">
<template slot-scope="scope">
<el-tag :type="scope.row.transferType === 'out' ? 'warning' : 'success'">
{{ scope.row.transferType === 'out' ? '调拨出库' : '调拨入库' }}
</el-tag>
</template>
</el-table-column>
<el-table-column label="状态" prop="status">
<template slot-scope="scope">
<el-tag :type="scope.row.status === 'approved' ? 'success' : 'warning'">
{{ scope.row.status === 'approved' ? '已审核' : '待审核' }}
</el-tag>
</template>
</el-table-column>
<el-table-column label="创建时间" prop="createTime" />
<el-table-column label="操作" align="center">
<template slot-scope="scope">
<el-button size="mini" icon="el-icon-edit" @click="handleEdit(scope.row)" v-if="scope.row.status === 'pending'">编辑</el-button>
<el-button size="mini" icon="el-icon-check" type="success" @click="handleApprove(scope.row)" v-if="scope.row.status === 'pending'">审核</el-button>
<el-button size="mini" icon="el-icon-delete" type="danger" @click="handleDelete(scope.row)">删除</el-button>
</template>
</el-table-column>
</el-table>
<pagination v-show="total>0" :total="total" :page.sync="queryParams.pageNum" :limit.sync="queryParams.pageSize" @pagination="getList" />
<el-dialog title="调拨单信息" :visible.sync="open" width="700px" append-to-body>
<el-form :model="form" ref="form" :rules="rules" label-width="100px">
<el-form-item label="调拨单号" prop="transferNo">
<el-input v-model="form.transferNo" placeholder="请输入调拨单号" />
</el-form-item>
<el-form-item label="物料" prop="materialId">
<el-select v-model="form.materialId" placeholder="请选择物料" @change="onMaterialChange">
<el-option v-for="item in materialOptions" :key="item.materialId" :label="item.materialName + ' (' + item.materialCode + ')'" :value="item.materialId" />
</el-select>
</el-form-item>
<el-form-item label="调拨数量" prop="quantity">
<el-input v-model="form.quantity" type="number" placeholder="请输入调拨数量" />
</el-form-item>
<el-form-item label="调出项目" prop="fromProject">
<el-input v-model="form.fromProject" placeholder="请输入调出项目" />
</el-form-item>
<el-form-item label="调入项目" prop="toProject">
<el-input v-model="form.toProject" placeholder="请输入调入项目" />
</el-form-item>
<el-form-item label="调拨日期" prop="transferDate">
<el-date-picker v-model="form.transferDate" type="date" placeholder="请选择调拨日期" />
</el-form-item>
<el-form-item label="调拨类型" prop="transferType">
<el-radio-group v-model="form.transferType">
<el-radio label="out">调拨出库</el-radio>
<el-radio label="in">调拨入库</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="备注" prop="remark">
<el-textarea v-model="form.remark" placeholder="请输入备注" rows="3" />
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitForm"> </el-button>
<el-button @click="cancel"> </el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import { listMaterialTransfer, getMaterialTransfer, addMaterialTransfer, updateMaterialTransfer, approveMaterialTransfer, delMaterialTransfer } from '@/api/engineering/material'
import { getMaterialOptions } from '@/api/engineering/material'
export default {
name: 'MaterialTransfer',
data() {
return {
showSearch: true,
loading: false,
total: 0,
queryParams: {
pageNum: 1,
pageSize: 10,
transferNo: '',
materialName: '',
transferType: '',
status: ''
},
transferList: [],
materialOptions: [],
open: false,
form: {},
rules: {
transferNo: [
{ required: true, message: '调拨单号不能为空', trigger: 'blur' }
],
materialId: [
{ required: true, message: '请选择物料', trigger: 'change' }
],
quantity: [
{ required: true, message: '调拨数量不能为空', trigger: 'blur' }
],
fromProject: [
{ required: true, message: '调出项目不能为空', trigger: 'blur' }
],
toProject: [
{ required: true, message: '调入项目不能为空', trigger: 'blur' }
],
transferDate: [
{ required: true, message: '调拨日期不能为空', trigger: 'change' }
],
transferType: [
{ required: true, message: '请选择调拨类型', trigger: 'change' }
]
}
}
},
created() {
this.getList()
this.getOptions()
},
methods: {
getList() {
this.loading = true
listMaterialTransfer(this.queryParams).then(response => {
this.transferList = response.rows
this.total = response.total
this.loading = false
})
},
getOptions() {
getMaterialOptions().then(response => {
this.materialOptions = response.data
})
},
handleQuery() {
this.queryParams.pageNum = 1
this.getList()
},
resetQuery() {
this.queryParams = {
pageNum: 1,
pageSize: 10,
transferNo: '',
materialName: '',
transferType: '',
status: ''
}
this.getList()
},
handleAdd() {
this.open = true
this.form = {}
this.getOptions()
},
handleEdit(row) {
this.open = true
getMaterialTransfer(row.transferId).then(response => {
this.form = response.data
})
},
handleDelete(row) {
this.$confirm('确定删除该调拨单吗?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
delMaterialTransfer(row.transferId).then(response => {
if (response.code === 200) {
this.msgSuccess('删除成功')
this.getList()
} else {
this.msgError(response.msg)
}
})
})
},
handleApprove(row) {
this.$confirm('确定审核该调拨单吗?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
approveMaterialTransfer(row.transferId).then(response => {
if (response.code === 200) {
this.msgSuccess('审核成功')
this.getList()
} else {
this.msgError(response.msg)
}
})
})
},
onMaterialChange() {
},
submitForm() {
this.$refs['form'].validate(valid => {
if (valid) {
if (this.form.transferId) {
updateMaterialTransfer(this.form).then(response => {
if (response.code === 200) {
this.msgSuccess('修改成功')
this.open = false
this.getList()
} else {
this.msgError(response.msg)
}
})
} else {
addMaterialTransfer(this.form).then(response => {
if (response.code === 200) {
this.msgSuccess('新增成功')
this.open = false
this.getList()
} else {
this.msgError(response.msg)
}
})
}
}
})
},
cancel() {
this.open = false
this.form = {}
}
}
}
</script>
<style scoped>
</style>

View File

@@ -80,7 +80,7 @@ export default {
}
},
methods: {
open(row) {
show(row) {
this.open = true
this.form = {
supplierId: null,

View File

@@ -1,61 +1,65 @@
<template>
<el-dialog :title="title" :visible.sync="open" width="800px" append-to-body>
<div v-if="detail">
<div v-if="loading" class="text-center">
<el-loading-spinner></el-loading-spinner>
<p>加载中...</p>
</div>
<div v-else-if="detail && detail.supplier">
<el-tabs type="border-card">
<el-tab-pane label="基本信息">
<el-form :model="detail.supplier" label-width="120px" class="detail-form">
<el-row>
<el-col :span="12">
<el-form-item label="供应商编号">
<span>{{ detail.supplier.supplierCode }}</span>
<span>{{ detail.supplier.supplierCode || '-' }}</span>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="供应商名称">
<span>{{ detail.supplier.supplierName }}</span>
<span>{{ detail.supplier.supplierName || '-' }}</span>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="简称">
<span>{{ detail.supplier.shortName }}</span>
<span>{{ detail.supplier.shortName || '-' }}</span>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="联系人">
<span>{{ detail.supplier.contactPerson }}</span>
<span>{{ detail.supplier.contactPerson || '-' }}</span>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="联系电话">
<span>{{ detail.supplier.contactPhone }}</span>
<span>{{ detail.supplier.contactPhone || '-' }}</span>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="邮箱">
<span>{{ detail.supplier.email }}</span>
<span>{{ detail.supplier.email || '-' }}</span>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<el-form-item label="地址">
<span>{{ detail.supplier.address }}</span>
<span>{{ detail.supplier.address || '-' }}</span>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="资质等级">
<span>{{ detail.supplier.qualification }}</span>
<span>{{ detail.supplier.qualification || '-' }}</span>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="注册资本">
<span>{{ detail.supplier.registerCapital }}</span>
<span>{{ detail.supplier.registerCapital || '-' }}</span>
</el-form-item>
</el-col>
</el-row>
@@ -74,7 +78,7 @@
</el-form>
</el-tab-pane>
<el-tab-pane label="银行账户">
<el-table :data="detail.accounts" border>
<el-table :data="detail.accounts || []" border>
<el-table-column label="账户ID" prop="accountId" />
<el-table-column label="开户行" prop="bankName" />
<el-table-column label="账号" prop="accountNo" />
@@ -91,19 +95,19 @@
<el-row>
<el-col :span="12">
<el-form-item label="合同总额">
<span>{{ formatMoney(detail.statistics.totalContractAmount) }}</span>
<span>{{ formatMoney(detail.statistics && detail.statistics.totalContractAmount) }}</span>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="已付款">
<span>{{ formatMoney(detail.statistics.totalPayment) }}</span>
<span>{{ formatMoney(detail.statistics && detail.statistics.totalPayment) }}</span>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="未付款">
<span>{{ formatMoney(detail.statistics.unpaidAmount) }}</span>
<span>{{ formatMoney(detail.statistics && detail.statistics.unpaidAmount) }}</span>
</el-form-item>
</el-col>
</el-row>
@@ -111,6 +115,9 @@
</el-tab-pane>
</el-tabs>
</div>
<div v-else>
<div class="text-center text-gray">暂无数据</div>
</div>
<div slot="footer" class="dialog-footer">
<el-button @click="cancel">关闭</el-button>
</div>
@@ -126,14 +133,22 @@ export default {
return {
open: false,
title: '供应商详情',
detail: {}
detail: {},
loading: false
}
},
methods: {
open(supplierId) {
show(supplierId) {
this.open = true
this.loading = true
this.detail = {}
getSupplierDetail(supplierId).then(response => {
this.detail = response.data
this.detail = response.data || {}
}).catch(error => {
console.error('加载供应商详情失败:', error)
this.detail = {}
}).finally(() => {
this.loading = false
})
},
cancel() {

View File

@@ -1,6 +1,6 @@
<template>
<div class="app-container">
<el-form :model="queryParams" ref="queryForm" size="small" inline :label-width="100px">
<el-form :model="queryParams" ref="queryForm" size="small" inline label-width="100px">
<el-form-item label="供应商编号" prop="supplierCode">
<el-input v-model="queryParams.supplierCode" placeholder="请输入供应商编号" clearable @keyup.enter.native="handleQuery" />
</el-form-item>

View File

@@ -4,6 +4,8 @@
-- 排序规则: utf8mb4_general_ci
-- ================================================
SET FOREIGN_KEY_CHECKS = 0;
-- ----------------------------
-- 1、部门表
-- ----------------------------
@@ -130,6 +132,8 @@ CREATE TABLE sys_role (
-- ----------------------------
INSERT INTO sys_role VALUES('1', '超级管理员', 'admin', 1, 1, 1, 1, '0', '0', 'admin', NOW(), '', NULL, '超级管理员');
INSERT INTO sys_role VALUES('2', '普通角色', 'common', 2, 2, 1, 1, '0', '0', 'admin', NOW(), '', NULL, '普通角色');
INSERT INTO sys_role VALUES('3', '工程角色', 'engineering',3, 3, 1, 1, '0', '0', 'admin', NOW(), '', NULL, '工程角色-隐藏金额字段');
INSERT INTO sys_role VALUES('4', '采购角色', 'purchase', 4, 4, 1, 1, '0', '0', 'admin', NOW(), '', NULL, '采购角色-隐藏金额字段');
-- ----------------------------
@@ -167,8 +171,7 @@ CREATE TABLE sys_menu (
INSERT INTO sys_menu VALUES('1', '系统管理', '0', '1', 'system', NULL, '', '', 1, 0, 'M', '0', '0', '', 'system', 'admin', NOW(), '', NULL, '系统管理目录');
INSERT INTO sys_menu VALUES('2', '系统监控', '0', '2', 'monitor', NULL, '', '', 1, 0, 'M', '0', '0', '', 'monitor', 'admin', NOW(), '', NULL, '系统监控目录');
INSERT INTO sys_menu VALUES('3', '系统工具', '0', '3', 'tool', NULL, '', '', 1, 0, 'M', '0', '0', '', 'tool', 'admin', NOW(), '', NULL, '系统工具目录');
INSERT INTO sys_menu VALUES('4', '若依官网', '0', '4', 'http://ruoyi.vip', NULL, '', '', 0, 0, 'M', '0', '0', '', 'guide', 'admin', NOW(), '', NULL, '若依官网地址');
INSERT INTO sys_menu VALUES('5', '工程管理', '0', '5', 'engineering', NULL, '', '', 1, 0, 'M', '0', '0', '', 'build', 'admin', NOW(), '', NULL, '工程管理目录');
INSERT INTO sys_menu VALUES('4', '工程管理', '0', '4', 'engineering', NULL, '', '', 1, 0, 'M', '0', '0', '', 'build', 'admin', NOW(), '', NULL, '工程管理目录');
-- 二级菜单
INSERT INTO sys_menu VALUES('100', '用户管理', '1', '1', 'user', 'system/user/index', '', '', 1, 0, 'C', '0', '0', 'system:user:list', 'user', 'admin', NOW(), '', NULL, '用户管理菜单');
INSERT INTO sys_menu VALUES('101', '角色管理', '1', '2', 'role', 'system/role/index', '', '', 1, 0, 'C', '0', '0', 'system:role:list', 'peoples', 'admin', NOW(), '', NULL, '角色管理菜单');
@@ -188,11 +191,11 @@ INSERT INTO sys_menu VALUES('114', '缓存列表', '2', '6', 'cacheList', 'm
INSERT INTO sys_menu VALUES('115', '表单构建', '3', '1', 'build', 'tool/build/index', '', '', 1, 0, 'C', '0', '0', 'tool:build:list', 'build', 'admin', NOW(), '', NULL, '表单构建菜单');
INSERT INTO sys_menu VALUES('116', '代码生成', '3', '2', 'gen', 'tool/gen/index', '', '', 1, 0, 'C', '0', '0', 'tool:gen:list', 'code', 'admin', NOW(), '', NULL, '代码生成菜单');
INSERT INTO sys_menu VALUES('117', '系统接口', '3', '3', 'swagger', 'tool/swagger/index', '', '', 1, 0, 'C', '0', '0', 'tool:swagger:list', 'swagger', 'admin', NOW(), '', NULL, '系统接口菜单');
INSERT INTO sys_menu VALUES('200', '供应商管理', '5', '1', 'supplier', 'engineering/supplier/index', '', '', 1, 0, 'C', '0', '0', 'system:engineering:supplier:list', 'people', 'admin', NOW(), '', NULL, '供应商管理菜单');
INSERT INTO sys_menu VALUES('201', '合同管理', '5', '2', 'contract', 'engineering/contract/index', '', '', 1, 0, 'C', '0', '0', 'system:engineering:contract:list', 'file-text', 'admin', NOW(), '', NULL, '合同管理菜单');
INSERT INTO sys_menu VALUES('202', '施工进度管理', '5', '3', 'construction', 'engineering/construction/index', '', '', 1, 0, 'C', '0', '0', 'system:engineering:construction:list', 'tree-table', 'admin', NOW(), '', NULL, '施工进度管理菜单');
INSERT INTO sys_menu VALUES('203', '物料管理', '5', '4', 'material', 'engineering/material/index', '', '', 1, 0, 'C', '0', '0', 'system:engineering:material:list', 'shopping', 'admin', NOW(), '', NULL, '物料管理菜单');
INSERT INTO sys_menu VALUES('204', '付款管理', '5', '5', 'payment', 'engineering/payment/index', '', '', 1, 0, 'C', '0', '0', 'system:engineering:payment:list', 'money', 'admin', NOW(), '', NULL, '付款管理菜单');
INSERT INTO sys_menu VALUES('200', '供应商管理', '4', '1', 'supplier', 'engineering/supplier/index', '', '', 1, 0, 'C', '0', '0', 'system:engineering:supplier:list', 'people', 'admin', NOW(), '', NULL, '供应商管理菜单');
INSERT INTO sys_menu VALUES('201', '合同管理', '4', '2', 'contract', 'engineering/contract/index', '', '', 1, 0, 'C', '0', '0', 'system:engineering:contract:list', 'file-text', 'admin', NOW(), '', NULL, '合同管理菜单');
INSERT INTO sys_menu VALUES('202', '施工进度管理', '4', '3', 'construction', 'engineering/construction/index', '', '', 1, 0, 'C', '0', '0', 'system:engineering:construction:list', 'tree-table', 'admin', NOW(), '', NULL, '施工进度管理菜单');
INSERT INTO sys_menu VALUES('203', '物料管理', '4', '4', 'material', 'engineering/material/index', '', '', 1, 0, 'C', '0', '0', 'system:engineering:material:list', 'shopping', 'admin', NOW(), '', NULL, '物料管理菜单');
INSERT INTO sys_menu VALUES('204', '付款管理', '4', '5', 'payment', 'engineering/payment/index', '', '', 1, 0, 'C', '0', '0', 'system:engineering:payment:list', 'money', 'admin', NOW(), '', NULL, '付款管理菜单');
-- 三级菜单
INSERT INTO sys_menu VALUES('500', '操作日志', '108', '1', 'operlog', 'monitor/operlog/index', '', '', 1, 0, 'C', '0', '0', 'monitor:operlog:list', 'form', 'admin', NOW(), '', NULL, '操作日志菜单');
INSERT INTO sys_menu VALUES('501', '登录日志', '108', '2', 'logininfor', 'monitor/logininfor/index', '', '', 1, 0, 'C', '0', '0', 'monitor:logininfor:list', 'logininfor', 'admin', NOW(), '', NULL, '登录日志菜单');
@@ -544,6 +547,16 @@ INSERT INTO sys_dict_type VALUES(7, '通知类型', 'sys_notice_type', '0',
INSERT INTO sys_dict_type VALUES(8, '通知状态', 'sys_notice_status', '0', 'admin', NOW(), '', NULL, '通知状态列表');
INSERT INTO sys_dict_type VALUES(9, '操作类型', 'sys_oper_type', '0', 'admin', NOW(), '', NULL, '操作类型列表');
INSERT INTO sys_dict_type VALUES(10, '系统状态', 'sys_common_status', '0', 'admin', NOW(), '', NULL, '登录状态列表');
INSERT INTO sys_dict_type VALUES(11, '合同类型', 'contract_type', '0', 'admin', NOW(), '', NULL, '合同类型列表');
INSERT INTO sys_dict_type VALUES(12, '付款类型', 'payment_type', '0', 'admin', NOW(), '', NULL, '付款类型列表');
INSERT INTO sys_dict_type VALUES(13, '付款方式', 'payment_method', '0', 'admin', NOW(), '', NULL, '付款方式列表');
INSERT INTO sys_dict_type VALUES(14, '供应商状态', 'supplier_status', '0', 'admin', NOW(), '', NULL, '供应商状态列表');
INSERT INTO sys_dict_type VALUES(15, '供应商类型', 'supplier_type', '0', 'admin', NOW(), '', NULL, '供应商类型列表');
INSERT INTO sys_dict_type VALUES(16, '合作状态', 'cooperation_status', '0', 'admin', NOW(), '', NULL, '合作状态列表');
INSERT INTO sys_dict_type VALUES(17, '验收状态', 'acceptance_status', '0', 'admin', NOW(), '', NULL, '验收状态列表');
INSERT INTO sys_dict_type VALUES(18, '施工状态', 'construction_status', '0', 'admin', NOW(), '', NULL, '施工状态列表');
INSERT INTO sys_dict_type VALUES(19, '审批状态', 'approval_status', '0', 'admin', NOW(), '', NULL, '审批状态列表');
INSERT INTO sys_dict_type VALUES(20, '合同状态', 'contract_status', '0', 'admin', NOW(), '', NULL, '合同状态列表');
-- ----------------------------
@@ -597,6 +610,42 @@ INSERT INTO sys_dict_data VALUES(26, 8, '生成代码', '8', 'sys_oper_ty
INSERT INTO sys_dict_data VALUES(27, 9, '清空数据', '9', 'sys_oper_type', '', 'danger', 'N', '0', 'admin', NOW(), '', NULL, '清空操作');
INSERT INTO sys_dict_data VALUES(28, 1, '成功', '0', 'sys_common_status', '', 'primary', 'N', '0', 'admin', NOW(), '', NULL, '正常状态');
INSERT INTO sys_dict_data VALUES(29, 2, '失败', '1', 'sys_common_status', '', 'danger', 'N', '0', 'admin', NOW(), '', NULL, '停用状态');
INSERT INTO sys_dict_data VALUES(30, 1, '施工合同', 'construction', 'contract_type', '', 'primary', 'Y', '0', 'admin', NOW(), '', NULL, '施工合同');
INSERT INTO sys_dict_data VALUES(31, 2, '采购合同', 'purchase', 'contract_type', '', 'success', 'N', '0', 'admin', NOW(), '', NULL, '采购合同');
INSERT INTO sys_dict_data VALUES(32, 3, '设备合同', 'equipment', 'contract_type', '', 'warning', 'N', '0', 'admin', NOW(), '', NULL, '设备合同');
INSERT INTO sys_dict_data VALUES(33, 1, '预付款', 'advance', 'payment_type', '', 'primary', 'Y', '0', 'admin', NOW(), '', NULL, '预付款');
INSERT INTO sys_dict_data VALUES(34, 2, '进度款', 'progress', 'payment_type', '', 'success', 'N', '0', 'admin', NOW(), '', NULL, '进度款');
INSERT INTO sys_dict_data VALUES(35, 3, '尾款', 'final', 'payment_type', '', 'warning', 'N', '0', 'admin', NOW(), '', NULL, '尾款');
INSERT INTO sys_dict_data VALUES(36, 4, '质保金', 'quality', 'payment_type', '', 'danger', 'N', '0', 'admin', NOW(), '', NULL, '质保金');
INSERT INTO sys_dict_data VALUES(37, 1, '银行转账', 'bank', 'payment_method', '', 'primary', 'Y', '0', 'admin', NOW(), '', NULL, '银行转账');
INSERT INTO sys_dict_data VALUES(38, 2, '现金', 'cash', 'payment_method', '', 'success', 'N', '0', 'admin', NOW(), '', NULL, '现金');
INSERT INTO sys_dict_data VALUES(39, 3, '支票', 'check', 'payment_method', '', 'warning', 'N', '0', 'admin', NOW(), '', NULL, '支票');
INSERT INTO sys_dict_data VALUES(40, 4, '承兑汇票', 'acceptance', 'payment_method', '', 'danger', 'N', '0', 'admin', NOW(), '', NULL, '承兑汇票');
INSERT INTO sys_dict_data VALUES(41, 1, '正常', 'normal', 'supplier_status', '', 'primary', 'Y', '0', 'admin', NOW(), '', NULL, '正常');
INSERT INTO sys_dict_data VALUES(42, 2, '禁用', 'disabled', 'supplier_status', '', 'warning', 'N', '0', 'admin', NOW(), '', NULL, '禁用');
INSERT INTO sys_dict_data VALUES(43, 3, '黑名单', 'blacklist', 'supplier_status', '', 'danger', 'N', '0', 'admin', NOW(), '', NULL, '黑名单');
INSERT INTO sys_dict_data VALUES(44, 1, '施工单位', 'construction', 'supplier_type', '', 'primary', 'Y', '0', 'admin', NOW(), '', NULL, '施工单位');
INSERT INTO sys_dict_data VALUES(45, 2, '材料供应商', 'material', 'supplier_type', '', 'success', 'N', '0', 'admin', NOW(), '', NULL, '材料供应商');
INSERT INTO sys_dict_data VALUES(46, 3, '设备供应商', 'equipment', 'supplier_type', '', 'warning', 'N', '0', 'admin', NOW(), '', NULL, '设备供应商');
INSERT INTO sys_dict_data VALUES(47, 4, '服务提供商', 'service', 'supplier_type', '', 'info', 'N', '0', 'admin', NOW(), '', NULL, '服务提供商');
INSERT INTO sys_dict_data VALUES(48, 1, '合作中', 'cooperating', 'cooperation_status', '', 'primary', 'Y', '0', 'admin', NOW(), '', NULL, '合作中');
INSERT INTO sys_dict_data VALUES(49, 2, '暂停合作', 'suspended', 'cooperation_status', '', 'warning', 'N', '0', 'admin', NOW(), '', NULL, '暂停合作');
INSERT INTO sys_dict_data VALUES(50, 3, '终止合作', 'terminated', 'cooperation_status', '', 'danger', 'N', '0', 'admin', NOW(), '', NULL, '终止合作');
INSERT INTO sys_dict_data VALUES(51, 1, '待验收', 'pending', 'acceptance_status', '', 'warning', 'Y', '0', 'admin', NOW(), '', NULL, '待验收');
INSERT INTO sys_dict_data VALUES(52, 2, '已提交', 'submitted', 'acceptance_status', '', 'info', 'N', '0', 'admin', NOW(), '', NULL, '已提交');
INSERT INTO sys_dict_data VALUES(53, 3, '已通过', 'approved', 'acceptance_status', '', 'success', 'N', '0', 'admin', NOW(), '', NULL, '已通过');
INSERT INTO sys_dict_data VALUES(54, 4, '已驳回', 'rejected', 'acceptance_status', '', 'danger', 'N', '0', 'admin', NOW(), '', NULL, '已驳回');
INSERT INTO sys_dict_data VALUES(55, 1, '待开工', 'pending', 'construction_status','', 'warning', 'Y', '0', 'admin', NOW(), '', NULL, '待开工');
INSERT INTO sys_dict_data VALUES(56, 2, '进行中', 'executing', 'construction_status','', 'primary', 'N', '0', 'admin', NOW(), '', NULL, '进行中');
INSERT INTO sys_dict_data VALUES(57, 3, '已完工', 'completed', 'construction_status','', 'success', 'N', '0', 'admin', NOW(), '', NULL, '已完工');
INSERT INTO sys_dict_data VALUES(58, 4, '已验收', 'accepted', 'construction_status','', 'info', 'N', '0', 'admin', NOW(), '', NULL, '已验收');
INSERT INTO sys_dict_data VALUES(59, 1, '待审批', 'pending', 'approval_status', '', 'warning', 'Y', '0', 'admin', NOW(), '', NULL, '待审批');
INSERT INTO sys_dict_data VALUES(60, 2, '已通过', 'approved', 'approval_status', '', 'success', 'N', '0', 'admin', NOW(), '', NULL, '已通过');
INSERT INTO sys_dict_data VALUES(61, 3, '已驳回', 'rejected', 'approval_status', '', 'danger', 'N', '0', 'admin', NOW(), '', NULL, '已驳回');
INSERT INTO sys_dict_data VALUES(62, 1, '草稿', 'draft', 'contract_status', '', 'info', 'Y', '0', 'admin', NOW(), '', NULL, '草稿');
INSERT INTO sys_dict_data VALUES(63, 2, '执行中', 'executing', 'contract_status', '', 'primary', 'N', '0', 'admin', NOW(), '', NULL, '执行中');
INSERT INTO sys_dict_data VALUES(64, 3, '已完成', 'completed', 'contract_status', '', 'success', 'N', '0', 'admin', NOW(), '', NULL, '已完成');
INSERT INTO sys_dict_data VALUES(65, 4, '已终止', 'terminated', 'contract_status', '', 'danger', 'N', '0', 'admin', NOW(), '', NULL, '已终止');
-- ----------------------------
@@ -716,38 +765,6 @@ INSERT INTO sys_notice VALUES(1, '欢迎使用若依管理系统', '2', '<p>欢
-- 工程管理业务表
-- ============================
-- ----------------------------
-- 供应商信息表
-- ----------------------------
DROP TABLE IF EXISTS engineering_supplier;
CREATE TABLE engineering_supplier (
supplier_id BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT '供应商ID',
supplier_code VARCHAR(50) NOT NULL UNIQUE COMMENT '供应商编码',
supplier_name VARCHAR(200) NOT NULL COMMENT '供应商名称',
short_name VARCHAR(100) COMMENT '简称',
contact_person VARCHAR(50) COMMENT '联系人',
contact_phone VARCHAR(20) COMMENT '联系电话',
email VARCHAR(100) COMMENT '邮箱',
address VARCHAR(500) COMMENT '地址',
business_scope TEXT COMMENT '经营范围',
qualification VARCHAR(200) COMMENT '资质证书',
register_capital DECIMAL(18,4) COMMENT '注册资本',
establish_date DATE COMMENT '成立日期',
status VARCHAR(20) DEFAULT 'normal' COMMENT '状态',
cooperation_status VARCHAR(20) DEFAULT 'cooperating' COMMENT '合作状态',
total_contract_amount DECIMAL(18,4) DEFAULT 0 COMMENT '合同总额',
total_payment_amount DECIMAL(18,4) DEFAULT 0 COMMENT '已付款总额',
remark TEXT COMMENT '备注',
del_flag CHAR(1) DEFAULT '0' COMMENT '删除标志',
create_by VARCHAR(64) DEFAULT '' COMMENT '创建者',
create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
update_by VARCHAR(64) DEFAULT '' COMMENT '更新者',
update_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
KEY idx_supplier_code (supplier_code),
KEY idx_supplier_status (status)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='供应商信息表';
-- ----------------------------
-- 供应商账户表
-- ----------------------------
@@ -779,7 +796,7 @@ CREATE TABLE engineering_supplier_payment_record (
record_id BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT '记录ID',
supplier_id BIGINT NOT NULL COMMENT '供应商ID',
payment_id BIGINT COMMENT '付款单ID',
amount DECIMAL(18,4) NOT NULL COMMENT '付款金额',
amount DECIMAL(18,4) NOT NULL COMMENT '金额',
payment_date DATE COMMENT '付款日期',
contract_id BIGINT COMMENT '合同ID',
payment_type VARCHAR(20) COMMENT '付款类型',
@@ -787,11 +804,43 @@ CREATE TABLE engineering_supplier_payment_record (
del_flag CHAR(1) DEFAULT '0' COMMENT '删除标志',
create_by VARCHAR(64) DEFAULT '' COMMENT '创建者',
create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
KEY idx_payment_record_supplier (supplier_id),
CONSTRAINT fk_payment_record_supplier FOREIGN KEY (supplier_id) REFERENCES engineering_supplier(supplier_id) ON DELETE CASCADE
KEY idx_record_supplier (supplier_id),
KEY idx_record_payment (payment_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='供应商付款记录表';
-- ----------------------------
-- 供应商信息表
-- ----------------------------
DROP TABLE IF EXISTS engineering_supplier;
CREATE TABLE engineering_supplier (
supplier_id BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT '供应商ID',
supplier_code VARCHAR(50) NOT NULL UNIQUE COMMENT '供应商编码',
supplier_name VARCHAR(200) NOT NULL COMMENT '供应商名称',
short_name VARCHAR(100) COMMENT '简称',
contact_person VARCHAR(50) COMMENT '联系人',
contact_phone VARCHAR(20) COMMENT '联系电话',
email VARCHAR(100) COMMENT '邮箱',
address VARCHAR(500) COMMENT '地址',
business_scope TEXT COMMENT '经营范围',
qualification VARCHAR(200) COMMENT '资质证书',
register_capital DECIMAL(18,4) COMMENT '注册资本',
establish_date DATE COMMENT '成立日期',
status VARCHAR(20) DEFAULT 'normal' COMMENT '状态',
cooperation_status VARCHAR(20) DEFAULT 'cooperating' COMMENT '合作状态',
total_contract_amount DECIMAL(18,4) DEFAULT 0 COMMENT '合同总额',
total_payment_amount DECIMAL(18,4) DEFAULT 0 COMMENT '已付款总额',
remark TEXT COMMENT '备注',
del_flag CHAR(1) DEFAULT '0' COMMENT '删除标志',
create_by VARCHAR(64) DEFAULT '' COMMENT '创建者',
create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
update_by VARCHAR(64) DEFAULT '' COMMENT '更新者',
update_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
KEY idx_supplier_code (supplier_code),
KEY idx_supplier_status (status)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='供应商信息表';
-- ----------------------------
-- 合同信息表
-- ----------------------------
@@ -985,4 +1034,6 @@ CREATE TABLE engineering_payment (
CONSTRAINT fk_payment_supplier FOREIGN KEY (supplier_id) REFERENCES engineering_supplier(supplier_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='付款申请表';
SET FOREIGN_KEY_CHECKS = 1;
COMMIT;

77
start_backend.bat Normal file
View File

@@ -0,0 +1,77 @@
@echo off
setlocal enabledelayedexpansion
set M2_REPO=C:\Users\86133\.m2\repository
set ADMIN_CLASSES=d:\klp-oa\engineering-management-ruoyi\RuoYi-Vue\ruoyi-admin\target\classes
set SYSTEM_CLASSES=d:\klp-oa\engineering-management-ruoyi\RuoYi-Vue\ruoyi-system\target\classes
set FRAMEWORK_CLASSES=d:\klp-oa\engineering-management-ruoyi\RuoYi-Vue\ruoyi-framework\target\classes
set COMMON_CLASSES=d:\klp-oa\engineering-management-ruoyi\RuoYi-Vue\ruoyi-common\target\classes
set CLASSPATH=%ADMIN_CLASSES%;%SYSTEM_CLASSES%;%FRAMEWORK_CLASSES%;%COMMON_CLASSES%
set CLASSPATH=%CLASSPATH%;%M2_REPO%\org\springframework\boot\spring-boot-starter-web\4.0.6\*
set CLASSPATH=%CLASSPATH%;%M2_REPO%\org\springframework\boot\spring-boot-starter\4.0.6\*
set CLASSPATH=%CLASSPATH%;%M2_REPO%\org\springframework\boot\spring-boot\4.0.6\*
set CLASSPATH=%CLASSPATH%;%M2_REPO%\org\springframework\boot\spring-boot-autoconfigure\4.0.6\*
set CLASSPATH=%CLASSPATH%;%M2_REPO%\org\springframework\boot\spring-boot-starter-logging\4.0.6\*
set CLASSPATH=%CLASSPATH%;%M2_REPO%\org\springframework\boot\spring-boot-starter-aop\4.0.6\*
set CLASSPATH=%CLASSPATH%;%M2_REPO%\org\springframework\boot\spring-boot-starter-jdbc\4.0.6\*
set CLASSPATH=%CLASSPATH%;%M2_REPO%\org\springframework\boot\spring-boot-starter-data-redis\4.0.6\*
set CLASSPATH=%CLASSPATH%;%M2_REPO%\org\springframework\boot\spring-boot-starter-security\4.0.6\*
set CLASSPATH=%CLASSPATH%;%M2_REPO%\org\springframework\boot\spring-boot-starter-validation\4.0.6\*
set CLASSPATH=%CLASSPATH%;%M2_REPO%\org\springframework\spring-core\6.1.7\*
set CLASSPATH=%CLASSPATH%;%M2_REPO%\org\springframework\spring-beans\6.1.7\*
set CLASSPATH=%CLASSPATH%;%M2_REPO%\org\springframework\spring-context\6.1.7\*
set CLASSPATH=%CLASSPATH%;%M2_REPO%\org\springframework\spring-expression\6.1.7\*
set CLASSPATH=%CLASSPATH%;%M2_REPO%\org\springframework\spring-aop\6.1.7\*
set CLASSPATH=%CLASSPATH%;%M2_REPO%\org\springframework\spring-tx\6.1.7\*
set CLASSPATH=%CLASSPATH%;%M2_REPO%\org\springframework\spring-jdbc\6.1.7\*
set CLASSPATH=%CLASSPATH%;%M2_REPO%\org\springframework\spring-web\6.1.7\*
set CLASSPATH=%CLASSPATH%;%M2_REPO%\org\springframework\spring-webmvc\6.1.7\*
set CLASSPATH=%CLASSPATH%;%M2_REPO%\org\springframework\spring-jcl\6.1.7\*
set CLASSPATH=%CLASSPATH%;%M2_REPO%\org\springframework\security\spring-security-web\6.2.4\*
set CLASSPATH=%CLASSPATH%;%M2_REPO%\org\springframework\security\spring-security-config\6.2.4\*
set CLASSPATH=%CLASSPATH%;%M2_REPO%\org\springframework\security\spring-security-core\6.2.4\*
set CLASSPATH=%CLASSPATH%;%M2_REPO%\org\mybatis\mybatis\3.5.13\*
set CLASSPATH=%CLASSPATH%;%M2_REPO%\org\mybatis\mybatis-spring\3.0.3\*
set CLASSPATH=%CLASSPATH%;%M2_REPO%\com\alibaba\druid\1.2.28\*
set CLASSPATH=%CLASSPATH%;%M2_REPO%\mysql\mysql-connector-j\8.0.33\*
set CLASSPATH=%CLASSPATH%;%M2_REPO%\com\alibaba\fastjson2\2.0.62\*
set CLASSPATH=%CLASSPATH%;%M2_REPO%\org\pagehelper\pagehelper-spring-boot-starter\4.1.0\*
set CLASSPATH=%CLASSPATH%;%M2_REPO%\org\springdoc\springdoc-openapi-starter-webmvc-ui\3.0.3\*
set CLASSPATH=%CLASSPATH%;%M2_REPO%\com\github\pavlobu\kaptcha\2.3.3\*
set CLASSPATH=%CLASSPATH%;%M2_REPO%\io\jsonwebtoken\jjwt-api\0.9.1\*
set CLASSPATH=%CLASSPATH%;%M2_REPO%\io\jsonwebtoken\jjwt-impl\0.9.1\*
set CLASSPATH=%CLASSPATH%;%M2_REPO%\io\jsonwebtoken\jjwt-jackson\0.9.1\*
set CLASSPATH=%CLASSPATH%;%M2_REPO%\org\hibernate\validator\8.0.1.Final\*
set CLASSPATH=%CLASSPATH%;%M2_REPO%\com\sun\mail\jakarta.mail\2.0.1\*
set CLASSPATH=%CLASSPATH%;%M2_REPO%\ch\qos\logback\logback-classic\1.5.6\*
set CLASSPATH=%CLASSPATH%;%M2_REPO%\ch\qos\logback\logback-core\1.5.6\*
set CLASSPATH=%CLASSPATH%;%M2_REPO%\org\slf4j\slf4j-api\2.0.12\*
set CLASSPATH=%CLASSPATH%;%M2_REPO%\org\apache\tomcat\embed\tomcat-embed-core\10.1.20\*
set CLASSPATH=%CLASSPATH%;%M2_REPO%\org\apache\tomcat\embed\tomcat-embed-el\10.1.20\*
set CLASSPATH=%CLASSPATH%;%M2_REPO%\org\apache\tomcat\embed\tomcat-embed-websocket\10.1.20\*
set CLASSPATH=%CLASSPATH%;%M2_REPO%\com\fasterxml\jackson\core\jackson-databind\2.16.1\*
set CLASSPATH=%CLASSPATH%;%M2_REPO%\com\fasterxml\jackson\core\jackson-annotations\2.16.1\*
set CLASSPATH=%CLASSPATH%;%M2_REPO%\com\fasterxml\jackson\core\jackson-core\2.16.1\*
set CLASSPATH=%CLASSPATH%;%M2_REPO%\com\fasterxml\jackson\datatype\jackson-datatype-jdk8\2.16.1\*
set CLASSPATH=%CLASSPATH%;%M2_REPO%\com\fasterxml\jackson\datatype\jackson-datatype-jsr310\2.16.1\*
set CLASSPATH=%CLASSPATH%;%M2_REPO%\org\apache\commons\commons-lang3\3.14.0\*
set CLASSPATH=%CLASSPATH%;%M2_REPO%\org\commons\io\commons-io\2.22.0\*
set CLASSPATH=%CLASSPATH%;%M2_REPO%\org\apache\poi\poi\4.1.2\*
set CLASSPATH=%CLASSPATH%;%M2_REPO%\org\apache\poi\poi-ooxml\4.1.2\*
set CLASSPATH=%CLASSPATH%;%M2_REPO%\javax\xml\bind\jaxb-api\2.3.1\*
set CLASSPATH=%CLASSPATH%;%M2_REPO%\com\sun\xml\bind\jaxb-impl\2.3.1\*
set CLASSPATH=%CLASSPATH%;%M2_REPO%\com\sun\xml\bind\jaxb-core\2.3.1\*
set CLASSPATH=%CLASSPATH%;%M2_REPO%\javax\activation\javax.activation-api\1.2.0\*
set CLASSPATH=%CLASSPATH%;%M2_REPO%\org\velocity\velocity-engine-core\2.3\*
set CLASSPATH=%CLASSPATH%;%M2_REPO%\commons-collections\commons-collections\3.2.2\*
set CLASSPATH=%CLASSPATH%;%M2_REPO%\redis\clients\jedis\5.1.0\*
set CLASSPATH=%CLASSPATH%;%M2_REPO%\org\apache\commons\commons-pool2\2.12.0\*
set CLASSPATH=%CLASSPATH%;%M2_REPO%\com\github\ben-manes\caffeine\caffeine\3.1.8\*
set CLASSPATH=%CLASSPATH%;%M2_REPO%\org\yaml\snakeyaml\2.2\*
set CLASSPATH=%CLASSPATH%;%M2_REPO%\com\ibm\icu\icu4j\74.1\*
echo Starting RuoYi Application...
java -cp "%CLASSPATH%" com.ruoyi.RuoYiApplication
pause

19
start_backend_simple.bat Normal file
View File

@@ -0,0 +1,19 @@
@echo off
setlocal enabledelayedexpansion
set M2_REPO=C:\Users\86133\.m2\repository
set CLASSES_DIR=d:\klp-oa\engineering-management-ruoyi\RuoYi-Vue
set CLASSPATH=%CLASSES_DIR%\ruoyi-admin\target\classes
set CLASSPATH=%CLASSPATH%;%CLASSES_DIR%\ruoyi-system\target\classes
set CLASSPATH=%CLASSPATH%;%CLASSES_DIR%\ruoyi-framework\target\classes
set CLASSPATH=%CLASSPATH%;%CLASSES_DIR%\ruoyi-common\target\classes
set CLASSPATH=%CLASSPATH%;%CLASSES_DIR%\ruoyi-quartz\target\classes
set CLASSPATH=%CLASSPATH%;%CLASSES_DIR%\ruoyi-generator\target\classes
set CLASSPATH=%CLASSPATH%;%M2_REPO%\**\*.jar
echo Starting RuoYi Application...
java -cp "%CLASSPATH%" com.ruoyi.RuoYiApplication
pause

93
start_final.bat Normal file
View File

@@ -0,0 +1,93 @@
@echo off
setlocal enabledelayedexpansion
set M2_REPO=C:\Users\86133\.m2\repository
set BOOT_VERSION=4.0.6
set SPRING_VERSION=6.1.7
set CLASSPATH=d:\klp-oa\engineering-management-ruoyi\RuoYi-Vue\ruoyi-admin\target\classes
set CLASSPATH=%CLASSPATH%;d:\klp-oa\engineering-management-ruoyi\RuoYi-Vue\ruoyi-system\target\classes
set CLASSPATH=%CLASSPATH%;d:\klp-oa\engineering-management-ruoyi\RuoYi-Vue\ruoyi-framework\target\classes
set CLASSPATH=%CLASSPATH%;d:\klp-oa\engineering-management-ruoyi\RuoYi-Vue\ruoyi-common\target\classes
set CLASSPATH=%CLASSPATH%;d:\klp-oa\engineering-management-ruoyi\RuoYi-Vue\ruoyi-quartz\target\classes
set CLASSPATH=%CLASSPATH%;d:\klp-oa\engineering-management-ruoyi\RuoYi-Vue\ruoyi-generator\target\classes
set CLASSPATH=%CLASSPATH%;%M2_REPO%\org\springframework\boot\spring-boot\%BOOT_VERSION%\spring-boot-%BOOT_VERSION%.jar
set CLASSPATH=%CLASSPATH%;%M2_REPO%\org\springframework\boot\spring-boot-autoconfigure\%BOOT_VERSION%\spring-boot-autoconfigure-%BOOT_VERSION%.jar
set CLASSPATH=%CLASSPATH%;%M2_REPO%\org\springframework\boot\spring-boot-starter\%BOOT_VERSION%\spring-boot-starter-%BOOT_VERSION%.jar
set CLASSPATH=%CLASSPATH%;%M2_REPO%\org\springframework\boot\spring-boot-starter-web\%BOOT_VERSION%\spring-boot-starter-web-%BOOT_VERSION%.jar
set CLASSPATH=%CLASSPATH%;%M2_REPO%\org\springframework\boot\spring-boot-starter-logging\%BOOT_VERSION%\spring-boot-starter-logging-%BOOT_VERSION%.jar
set CLASSPATH=%CLASSPATH%;%M2_REPO%\org\springframework\boot\spring-boot-starter-aop\%BOOT_VERSION%\spring-boot-starter-aop-%BOOT_VERSION%.jar
set CLASSPATH=%CLASSPATH%;%M2_REPO%\org\springframework\boot\spring-boot-starter-jdbc\%BOOT_VERSION%\spring-boot-starter-jdbc-%BOOT_VERSION%.jar
set CLASSPATH=%CLASSPATH%;%M2_REPO%\org\springframework\boot\spring-boot-starter-data-redis\%BOOT_VERSION%\spring-boot-starter-data-redis-%BOOT_VERSION%.jar
set CLASSPATH=%CLASSPATH%;%M2_REPO%\org\springframework\boot\spring-boot-starter-security\%BOOT_VERSION%\spring-boot-starter-security-%BOOT_VERSION%.jar
set CLASSPATH=%CLASSPATH%;%M2_REPO%\org\springframework\boot\spring-boot-starter-validation\%BOOT_VERSION%\spring-boot-starter-validation-%BOOT_VERSION%.jar
set CLASSPATH=%CLASSPATH%;%M2_REPO%\org\springframework\boot\spring-boot-starter-thymeleaf\%BOOT_VERSION%\spring-boot-starter-thymeleaf-%BOOT_VERSION%.jar
set CLASSPATH=%CLASSPATH%;%M2_REPO%\org\springframework\boot\spring-boot-starter-mail\%BOOT_VERSION%\spring-boot-starter-mail-%BOOT_VERSION%.jar
set CLASSPATH=%CLASSPATH%;%M2_REPO%\org\springframework\spring-core\%SPRING_VERSION%\spring-core-%SPRING_VERSION%.jar
set CLASSPATH=%CLASSPATH%;%M2_REPO%\org\springframework\spring-beans\%SPRING_VERSION%\spring-beans-%SPRING_VERSION%.jar
set CLASSPATH=%CLASSPATH%;%M2_REPO%\org\springframework\spring-context\%SPRING_VERSION%\spring-context-%SPRING_VERSION%.jar
set CLASSPATH=%CLASSPATH%;%M2_REPO%\org\springframework\spring-expression\%SPRING_VERSION%\spring-expression-%SPRING_VERSION%.jar
set CLASSPATH=%CLASSPATH%;%M2_REPO%\org\springframework\spring-aop\%SPRING_VERSION%\spring-aop-%SPRING_VERSION%.jar
set CLASSPATH=%CLASSPATH%;%M2_REPO%\org\springframework\spring-tx\%SPRING_VERSION%\spring-tx-%SPRING_VERSION%.jar
set CLASSPATH=%CLASSPATH%;%M2_REPO%\org\springframework\spring-jdbc\%SPRING_VERSION%\spring-jdbc-%SPRING_VERSION%.jar
set CLASSPATH=%CLASSPATH%;%M2_REPO%\org\springframework\spring-web\%SPRING_VERSION%\spring-web-%SPRING_VERSION%.jar
set CLASSPATH=%CLASSPATH%;%M2_REPO%\org\springframework\spring-webmvc\%SPRING_VERSION%\spring-webmvc-%SPRING_VERSION%.jar
set CLASSPATH=%CLASSPATH%;%M2_REPO%\org\springframework\spring-jcl\%SPRING_VERSION%\spring-jcl-%SPRING_VERSION%.jar
set CLASSPATH=%CLASSPATH%;%M2_REPO%\org\springframework\security\spring-security-web\6.2.4\spring-security-web-6.2.4.jar
set CLASSPATH=%CLASSPATH%;%M2_REPO%\org\springframework\security\spring-security-config\6.2.4\spring-security-config-6.2.4.jar
set CLASSPATH=%CLASSPATH%;%M2_REPO%\org\springframework\security\spring-security-core\6.2.4\spring-security-core-6.2.4.jar
set CLASSPATH=%CLASSPATH%;%M2_REPO%\org\mybatis\mybatis\3.5.13\mybatis-3.5.13.jar
set CLASSPATH=%CLASSPATH%;%M2_REPO%\org\mybatis\mybatis-spring\3.0.3\mybatis-spring-3.0.3.jar
set CLASSPATH=%CLASSPATH%;%M2_REPO%\com\baomidou\mybatis-plus\3.5.5\mybatis-plus-3.5.5.jar
set CLASSPATH=%CLASSPATH%;%M2_REPO%\com\baomidou\mybatis-plus-core\3.5.5\mybatis-plus-core-3.5.5.jar
set CLASSPATH=%CLASSPATH%;%M2_REPO%\org\pagehelper\pagehelper\6.5.0\pagehelper-6.5.0.jar
set CLASSPATH=%CLASSPATH%;%M2_REPO%\org\pagehelper\pagehelper-spring-boot-starter\4.1.0\pagehelper-spring-boot-starter-4.1.0.jar
set CLASSPATH=%CLASSPATH%;%M2_REPO%\com\alibaba\druid\1.2.28\druid-1.2.28.jar
set CLASSPATH=%CLASSPATH%;%M2_REPO%\mysql\mysql-connector-j\8.0.33\mysql-connector-j-8.0.33.jar
set CLASSPATH=%CLASSPATH%;%M2_REPO%\com\alibaba\fastjson2\2.0.62\fastjson2-2.0.62.jar
set CLASSPATH=%CLASSPATH%;%M2_REPO%\com\fasterxml\jackson\core\jackson-databind\2.16.1\jackson-databind-2.16.1.jar
set CLASSPATH=%CLASSPATH%;%M2_REPO%\com\fasterxml\jackson\core\jackson-annotations\2.16.1\jackson-annotations-2.16.1.jar
set CLASSPATH=%CLASSPATH%;%M2_REPO%\com\fasterxml\jackson\core\jackson-core\2.16.1\jackson-core-2.16.1.jar
set CLASSPATH=%CLASSPATH%;%M2_REPO%\com\fasterxml\jackson\datatype\jackson-datatype-jdk8\2.16.1\jackson-datatype-jdk8-2.16.1.jar
set CLASSPATH=%CLASSPATH%;%M2_REPO%\com\fasterxml\jackson\datatype\jackson-datatype-jsr310\2.16.1\jackson-datatype-jsr310-2.16.1.jar
set CLASSPATH=%CLASSPATH%;%M2_REPO%\org\apache\tomcat\embed\tomcat-embed-core\10.1.20\tomcat-embed-core-10.1.20.jar
set CLASSPATH=%CLASSPATH%;%M2_REPO%\org\apache\tomcat\embed\tomcat-embed-el\10.1.20\tomcat-embed-el-10.1.20.jar
set CLASSPATH=%CLASSPATH%;%M2_REPO%\org\apache\tomcat\embed\tomcat-embed-websocket\10.1.20\tomcat-embed-websocket-10.1.20.jar
set CLASSPATH=%CLASSPATH%;%M2_REPO%\org\hibernate\validator\8.0.1.Final\hibernate-validator-8.0.1.Final.jar
set CLASSPATH=%CLASSPATH%;%M2_REPO%\jakarta\validation\jakarta.validation-api\3.0.2\jakarta.validation-api-3.0.2.jar
set CLASSPATH=%CLASSPATH%;%M2_REPO%\redis\clients\jedis\5.1.0\jedis-5.1.0.jar
set CLASSPATH=%CLASSPATH%;%M2_REPO%\org\apache\commons\commons-pool2\2.12.0\commons-pool2-2.12.0.jar
set CLASSPATH=%CLASSPATH%;%M2_REPO%\org\yaml\snakeyaml\2.2\snakeyaml-2.2.jar
set CLASSPATH=%CLASSPATH%;%M2_REPO%\org\slf4j\slf4j-api\2.0.12\slf4j-api-2.0.12.jar
set CLASSPATH=%CLASSPATH%;%M2_REPO%\ch\qos\logback\logback-classic\1.5.6\logback-classic-1.5.6.jar
set CLASSPATH=%CLASSPATH%;%M2_REPO%\ch\qos\logback\logback-core\1.5.6\logback-core-1.5.6.jar
set CLASSPATH=%CLASSPATH%;%M2_REPO%\org\apache\commons\commons-lang3\3.14.0\commons-lang3-3.14.0.jar
set CLASSPATH=%CLASSPATH%;%M2_REPO%\org\commons\io\commons-io\2.22.0\commons-io-2.22.0.jar
set CLASSPATH=%CLASSPATH%;%M2_REPO%\org\springdoc\springdoc-openapi-starter-webmvc-ui\3.0.3\springdoc-openapi-starter-webmvc-ui-3.0.3.jar
set CLASSPATH=%CLASSPATH%;%M2_REPO%\io\swagger\swagger-core\2.2.20\swagger-core-2.2.20.jar
set CLASSPATH=%CLASSPATH%;%M2_REPO%\io\jsonwebtoken\jjwt-api\0.9.1\jjwt-api-0.9.1.jar
set CLASSPATH=%CLASSPATH%;%M2_REPO%\io\jsonwebtoken\jjwt-impl\0.9.1\jjwt-impl-0.9.1.jar
set CLASSPATH=%CLASSPATH%;%M2_REPO%\io\jsonwebtoken\jjwt-jackson\0.9.1\jjwt-jackson-0.9.1.jar
set CLASSPATH=%CLASSPATH%;%M2_REPO%\com\github\ben-manes\caffeine\caffeine\3.1.8\caffeine-3.1.8.jar
set CLASSPATH=%CLASSPATH%;%M2_REPO%\com\github\pavlobu\kaptcha\2.3.3\kaptcha-2.3.3.jar
echo Starting RuoYi Application...
java -cp "%CLASSPATH%" com.ruoyi.RuoYiApplication
pause

74
start_spring.bat Normal file
View File

@@ -0,0 +1,74 @@
@echo off
setlocal enabledelayedexpansion
set M2_REPO=C:\Users\86133\.m2\repository
set BOOT_VERSION=4.0.6
set SPRING_VERSION=6.1.7
set CLASSPATH=d:\klp-oa\engineering-management-ruoyi\RuoYi-Vue\ruoyi-admin\target\classes
set CLASSPATH=%CLASSPATH%;d:\klp-oa\engineering-management-ruoyi\RuoYi-Vue\ruoyi-system\target\classes
set CLASSPATH=%CLASSPATH%;d:\klp-oa\engineering-management-ruoyi\RuoYi-Vue\ruoyi-framework\target\classes
set CLASSPATH=%CLASSPATH%;d:\klp-oa\engineering-management-ruoyi\RuoYi-Vue\ruoyi-common\target\classes
set CLASSPATH=%CLASSPATH%;d:\klp-oa\engineering-management-ruoyi\RuoYi-Vue\ruoyi-quartz\target\classes
set CLASSPATH=%CLASSPATH%;d:\klp-oa\engineering-management-ruoyi\RuoYi-Vue\ruoyi-generator\target\classes
set CLASSPATH=%CLASSPATH%;%M2_REPO%\org\springframework\boot\spring-boot\%BOOT_VERSION%\spring-boot-%BOOT_VERSION%.jar
set CLASSPATH=%CLASSPATH%;%M2_REPO%\org\springframework\boot\spring-boot-autoconfigure\%BOOT_VERSION%\spring-boot-autoconfigure-%BOOT_VERSION%.jar
set CLASSPATH=%CLASSPATH%;%M2_REPO%\org\springframework\boot\spring-boot-starter\%BOOT_VERSION%\spring-boot-starter-%BOOT_VERSION%.jar
set CLASSPATH=%CLASSPATH%;%M2_REPO%\org\springframework\boot\spring-boot-starter-web\%BOOT_VERSION%\spring-boot-starter-web-%BOOT_VERSION%.jar
set CLASSPATH=%CLASSPATH%;%M2_REPO%\org\springframework\boot\spring-boot-starter-logging\%BOOT_VERSION%\spring-boot-starter-logging-%BOOT_VERSION%.jar
set CLASSPATH=%CLASSPATH%;%M2_REPO%\org\springframework\boot\spring-boot-starter-aop\%BOOT_VERSION%\spring-boot-starter-aop-%BOOT_VERSION%.jar
set CLASSPATH=%CLASSPATH%;%M2_REPO%\org\springframework\boot\spring-boot-starter-jdbc\%BOOT_VERSION%\spring-boot-starter-jdbc-%BOOT_VERSION%.jar
set CLASSPATH=%CLASSPATH%;%M2_REPO%\org\springframework\boot\spring-boot-starter-data-redis\%BOOT_VERSION%\spring-boot-starter-data-redis-%BOOT_VERSION%.jar
set CLASSPATH=%CLASSPATH%;%M2_REPO%\org\springframework\boot\spring-boot-starter-security\%BOOT_VERSION%\spring-boot-starter-security-%BOOT_VERSION%.jar
set CLASSPATH=%CLASSPATH%;%M2_REPO%\org\springframework\boot\spring-boot-starter-validation\%BOOT_VERSION%\spring-boot-starter-validation-%BOOT_VERSION%.jar
set CLASSPATH=%CLASSPATH%;%M2_REPO%\org\springframework\spring-core\%SPRING_VERSION%\spring-core-%SPRING_VERSION%.jar
set CLASSPATH=%CLASSPATH%;%M2_REPO%\org\springframework\spring-beans\%SPRING_VERSION%\spring-beans-%SPRING_VERSION%.jar
set CLASSPATH=%CLASSPATH%;%M2_REPO%\org\springframework\spring-context\%SPRING_VERSION%\spring-context-%SPRING_VERSION%.jar
set CLASSPATH=%CLASSPATH%;%M2_REPO%\org\springframework\spring-expression\%SPRING_VERSION%\spring-expression-%SPRING_VERSION%.jar
set CLASSPATH=%CLASSPATH%;%M2_REPO%\org\springframework\spring-aop\%SPRING_VERSION%\spring-aop-%SPRING_VERSION%.jar
set CLASSPATH=%CLASSPATH%;%M2_REPO%\org\springframework\spring-tx\%SPRING_VERSION%\spring-tx-%SPRING_VERSION%.jar
set CLASSPATH=%CLASSPATH%;%M2_REPO%\org\springframework\spring-jdbc\%SPRING_VERSION%\spring-jdbc-%SPRING_VERSION%.jar
set CLASSPATH=%CLASSPATH%;%M2_REPO%\org\springframework\spring-web\%SPRING_VERSION%\spring-web-%SPRING_VERSION%.jar
set CLASSPATH=%CLASSPATH%;%M2_REPO%\org\springframework\spring-webmvc\%SPRING_VERSION%\spring-webmvc-%SPRING_VERSION%.jar
set CLASSPATH=%CLASSPATH%;%M2_REPO%\org\springframework\spring-jcl\%SPRING_VERSION%\spring-jcl-%SPRING_VERSION%.jar
set CLASSPATH=%CLASSPATH%;%M2_REPO%\org\springframework\security\spring-security-web\6.2.4\spring-security-web-6.2.4.jar
set CLASSPATH=%CLASSPATH%;%M2_REPO%\org\springframework\security\spring-security-config\6.2.4\spring-security-config-6.2.4.jar
set CLASSPATH=%CLASSPATH%;%M2_REPO%\org\springframework\security\spring-security-core\6.2.4\spring-security-core-6.2.4.jar
set CLASSPATH=%CLASSPATH%;%M2_REPO%\org\mybatis\mybatis\3.5.13\mybatis-3.5.13.jar
set CLASSPATH=%CLASSPATH%;%M2_REPO%\org\mybatis\mybatis-spring\3.0.3\mybatis-spring-3.0.3.jar
set CLASSPATH=%CLASSPATH%;%M2_REPO%\com\alibaba\druid\1.2.28\druid-1.2.28.jar
set CLASSPATH=%CLASSPATH%;%M2_REPO%\mysql\mysql-connector-j\8.0.33\mysql-connector-j-8.0.33.jar
set CLASSPATH=%CLASSPATH%;%M2_REPO%\com\alibaba\fastjson2\2.0.62\fastjson2-2.0.62.jar
set CLASSPATH=%CLASSPATH%;%M2_REPO%\com\fasterxml\jackson\core\jackson-databind\2.16.1\jackson-databind-2.16.1.jar
set CLASSPATH=%CLASSPATH%;%M2_REPO%\com\fasterxml\jackson\core\jackson-annotations\2.16.1\jackson-annotations-2.16.1.jar
set CLASSPATH=%CLASSPATH%;%M2_REPO%\com\fasterxml\jackson\core\jackson-core\2.16.1\jackson-core-2.16.1.jar
set CLASSPATH=%CLASSPATH%;%M2_REPO%\org\apache\tomcat\embed\tomcat-embed-core\10.1.20\tomcat-embed-core-10.1.20.jar
set CLASSPATH=%CLASSPATH%;%M2_REPO%\org\apache\tomcat\embed\tomcat-embed-el\10.1.20\tomcat-embed-el-10.1.20.jar
set CLASSPATH=%CLASSPATH%;%M2_REPO%\org\apache\tomcat\embed\tomcat-embed-websocket\10.1.20\tomcat-embed-websocket-10.1.20.jar
set CLASSPATH=%CLASSPATH%;%M2_REPO%\org\hibernate\validator\8.0.1.Final\hibernate-validator-8.0.1.Final.jar
set CLASSPATH=%CLASSPATH%;%M2_REPO%\jakarta\validation\jakarta.validation-api\3.0.2\jakarta.validation-api-3.0.2.jar
set CLASSPATH=%CLASSPATH%;%M2_REPO%\redis\clients\jedis\5.1.0\jedis-5.1.0.jar
set CLASSPATH=%CLASSPATH%;%M2_REPO%\org\apache\commons\commons-pool2\2.12.0\commons-pool2-2.12.0.jar
set CLASSPATH=%CLASSPATH%;%M2_REPO%\org\yaml\snakeyaml\2.2\snakeyaml-2.2.jar
set CLASSPATH=%CLASSPATH%;%M2_REPO%\org\slf4j\slf4j-api\2.0.12\slf4j-api-2.0.12.jar
set CLASSPATH=%CLASSPATH%;%M2_REPO%\ch\qos\logback\logback-classic\1.5.6\logback-classic-1.5.6.jar
set CLASSPATH=%CLASSPATH%;%M2_REPO%\ch\qos\logback\logback-core\1.5.6\logback-core-1.5.6.jar
set CLASSPATH=%CLASSPATH%;%M2_REPO%\org\apache\commons\commons-lang3\3.14.0\commons-lang3-3.14.0.jar
set CLASSPATH=%CLASSPATH%;%M2_REPO%\org\commons\io\commons-io\2.22.0\commons-io-2.22.0.jar
echo Starting RuoYi Application...
java -cp "%CLASSPATH%" com.ruoyi.RuoYiApplication
pause