Author SHA1 Message Date
王奎兴 4a0ac011b9 dockerfile jdk修改 2026-02-10 17:47:09 +08:00
王奎兴 0363e6fdc5 Merge branch 'test'
# Conflicts:
#	mhd-auth/src/main/resources/bootstrap.yml
#	mhd-gateway/src/main/resources/bootstrap.yml
#	mhd-modules/mhd-system/src/main/resources/bootstrap.yml
#	mhd-user-center/src/main/resources/bootstrap.yml
#	mhd_bms/src/main/resources/bootstrap.yml
#	mhd_finance/src/main/resources/bootstrap.yml
#	mhd_oms/src/main/resources/bootstrap.yml
#	mhd_product/src/main/resources/bootstrap.yml
#	mhd_thrid_party/src/main/resources/bootstrap.yml
#	mhd_transport/src/main/resources/bootstrap.yml
#	mhd_wms/src/main/resources/bootstrap.yml
2026-02-10 11:30:27 +08:00
王奎兴 ee873473fb nacos配置修改; 2026-02-10 11:22:51 +08:00
王奎兴 b7233d4052 Merge branch 'dev'
# Conflicts:
#	mhd_finance/src/main/resources/bootstrap.yml
2026-02-10 11:18:36 +08:00
王奎兴 afc47230df bms nacos配置修改; 2026-02-09 15:23:17 +08:00
王奎兴 4917dcb154 修改dockerfile jar包位置 2026-02-09 15:14:52 +08:00
王奎兴 144a5f625a bms及bms达梦配置修改; 2026-02-09 14:59:37 +08:00
王奎兴 b136e6a55e bms及bms达梦配置修改; 2026-02-09 14:58:07 +08:00
王奎兴 1eb2f4c816 测试环境nacos配置修改; 2026-02-09 14:46:28 +08:00
王奎兴 8ca0b289fa Merge branch 'dev' into test 2026-02-09 14:45:24 +08:00
王奎兴 457fceb0b1 测试环境nacos配置修改; 2026-02-09 14:44:40 +08:00
hjx 7ab77cfbf7 集成bms服务模块 2026-02-09 14:41:55 +08:00
王奎兴 4f16713c03 Merge branch 'dev' into test
# Conflicts:
#	mhd-user-center/src/main/resources/bootstrap.yml
#	mhd_finance/src/main/resources/bootstrap.yml
2026-02-09 14:40:57 +08:00
王奎兴 5d89fdc0a6 Merge branch 'wms_dev' into wms_dev_hbbf
# Conflicts:
#	mhd-api/mhd-api-system/src/main/java/com/mhd/system/api/UserServiceFeign.java
#	mhd_oms/pom.xml
2026-02-09 14:29:47 +08:00
秦鸿展 9cdb5a8896 任务BUG修改 2026-02-09 14:02:08 +08:00
秦鸿展 bea406051f 仓库管理按时间倒序排序 2026-02-09 13:16:25 +08:00
秦鸿展 af540c67f9 拣货单管理物料种类显示修改 2026-02-09 10:54:33 +08:00
秦鸿展 598a8b89e3 计划数量为0的修改 2026-02-09 10:26:07 +08:00
秦鸿展 f149b7322d 入库出库默认类型修改 2026-02-09 09:43:31 +08:00
王奎兴 cbe6283009 库存查询面积 体积等累加计算; 2026-02-07 17:40:07 +08:00
王奎兴 ea8739d178 库存按货主查询修改; 2026-02-07 17:37:03 +08:00
王奎兴 d40556c0be 上架异常,只比较主项; 2026-02-07 17:32:52 +08:00
秦鸿展 244b8d7e6e 基础数据的BUG修改 2026-02-07 17:22:11 +08:00
王奎兴 e7162e1877 库存查询添加批次属性字段; 2026-02-07 16:00:41 +08:00
王奎兴 cad9445ec8 库存查询不传值返回查全部; 2026-02-07 15:57:16 +08:00
王奎兴 67d9da9c5d 收获下发失败; 2026-02-07 15:47:09 +08:00
王奎兴 de7c40e6ce 库存查询根据查询维度分组插叙; 2026-02-07 15:40:56 +08:00
王奎兴 ea4b53b041 生成收货单计划数量未存值; 2026-02-07 15:01:51 +08:00
王奎兴 fed9d449af 库存调整记录按创建时间倒序排序; 2026-02-07 14:47:52 +08:00
王奎兴 848c92576d 上架完成后,上架数量=计划数量的也生成了入库异常信息。(问题修改) 2026-02-07 14:34:19 +08:00
秦鸿展 c652ccd087 Merge branch 'dev_qinhongzhanWMS' into wms_dev 2026-02-07 13:53:20 +08:00
秦鸿展 52a34779ec 技术数据仓库查询修改 2026-02-07 13:52:49 +08:00
王奎兴 d1135022c8 出库明细分配数量为0则不生成拣货任务; 2026-02-07 13:47:39 +08:00
王奎兴 48a2a28025 Merge remote-tracking branch 'origin/wms_dev' into wms_dev 2026-02-07 13:43:19 +08:00
王奎兴 33532bb92d 库存调整上架前状态去除; 2026-02-07 13:23:47 +08:00
王奎兴 5b85d5c3e1 上架入库数据判空(上架保存失败); 2026-02-07 13:23:46 +08:00
王奎兴 ad063713a4 库存调整上架前状态去除; 2026-02-07 13:23:09 +08:00
王奎兴 d3dbeb5858 上架入库数据判空; 2026-02-07 12:25:35 +08:00
秦鸿展 44d295f702 Merge branch 'dev_qinhongzhanWMS' into wms_dev
# Conflicts:
#	mhd-modules/mhd-system/src/main/resources/mapper/basic/lease/LeaseMapper.xml
2026-02-07 10:25:42 +08:00
秦鸿展 fe1aadd8ac 租赁管理(编辑、创建时间修改时间查询)BUG修改 2026-02-07 10:24:43 +08:00
赵辉 98c4c08a8f 修改密码修正 2026-02-06 18:51:54 +08:00
赵辉 5170a2d96f Merge branch 'dev' into test 2026-02-06 18:50:42 +08:00
赵辉 fa68e9dc0e 修改密码修正 2026-02-06 18:50:13 +08:00
王奎兴 93099ce1c0 出库单默认单据类型; 2026-02-06 16:46:17 +08:00
zhou-hongcheng 7974fefd96 Merge remote-tracking branch 'origin/wms_dev' into wms_dev 2026-02-06 16:31:09 +08:00
王奎兴 0322b325f6 及时库存查询; 2026-02-06 16:22:11 +08:00
王奎兴 f62eed296f 及时库存查询; 2026-02-06 16:17:07 +08:00
王奎兴 a25e56f9b6 及时库存查询; 2026-02-06 16:05:53 +08:00
王奎兴 102fec9ccd 及时库存; 2026-02-06 15:58:03 +08:00
王奎兴 10c071d17b 收货添加属性信息; 2026-02-06 15:54:20 +08:00
王奎兴 1de84cfedb Merge remote-tracking branch 'origin/wms_dev' into wms_dev 2026-02-06 15:49:59 +08:00
王奎兴 4327b83c82 收货添加属性信息; 2026-02-06 15:49:49 +08:00
秦鸿展 f9b2d212b2 Merge branch 'dev_qinhongzhanWMS' into wms_dev 2026-02-06 15:48:59 +08:00
秦鸿展 f404ef7516 入库,收货,上架,出库。拣货作业单,拣货单管理,查询BUG修改 2026-02-06 15:48:27 +08:00
王奎兴 78c10abe4f 收货添加属性信息; 2026-02-06 15:46:25 +08:00
王奎兴 5e50398687 收货添加属性信息; 2026-02-06 15:36:58 +08:00
赵辉 d1e982b9d4 Merge branch 'dev' into test 2026-02-06 15:26:00 +08:00
赵辉 73e7811b13 oms修改 2026-02-06 15:25:23 +08:00
赵辉 c0c75e2db0 Merge branch 'dev' into test
# Conflicts:
#	mhd_finance/src/main/resources/bootstrap.yml
2026-02-06 14:20:05 +08:00
赵辉 8f8bda4a87 yml修改 2026-02-06 14:19:37 +08:00
王奎兴 55a41408b3 及时库存; 2026-02-06 14:16:39 +08:00
zhou-hongcheng 42ec30eb42 pda增加承运商 2026-02-06 13:58:00 +08:00
王奎兴 cac5c16d3b 及时库存; 2026-02-06 13:57:34 +08:00
秦鸿展 3d3c978c1d Merge branch 'dev_qinhongzhanWMS' into wms_dev 2026-02-06 13:51:08 +08:00
秦鸿展 2f1e6dff42 上架管理(上架单号/收货单号)模糊查询 2026-02-06 13:50:44 +08:00
王奎兴 e4e953fb59 及时库存; 2026-02-06 13:47:32 +08:00
王奎兴 3cbaec35df Merge remote-tracking branch 'origin/wms_dev' into wms_dev 2026-02-06 13:18:05 +08:00
王奎兴 31acfe0aa9 及时库存; 2026-02-06 13:17:43 +08:00
zhou-hongcheng fc1ddec2ba 物料条码模糊查询 2026-02-06 13:08:48 +08:00
zhou-hongcheng 5acc1059c1 货主管理查询条件优化 2026-02-06 11:12:39 +08:00
zhou-hongcheng d9e5d5187e 根据仓库id过滤列表,根据仓库id查询仓库名称 2026-02-06 10:55:36 +08:00
秦鸿展 44916f5460 Merge branch 'dev_qinhongzhanWMS' into wms_dev 2026-02-06 10:20:13 +08:00
秦鸿展 8114bf79e2 上架子项修改 2026-02-06 10:19:37 +08:00
zhou-hongcheng 1e6173c74f 交接作业单pad内容补充 2026-02-06 10:03:27 +08:00
zhou-hongcheng 3e178a53ff Merge branch 'dev_lzh_wms_20260120' into wms_dev 2026-02-05 19:29:00 +08:00
zhou-hongcheng 28afb0b8dc 1.上架单详情页添加字段
2.交接作业单pad内容补充
2026-02-05 19:28:29 +08:00
王奎兴 df6c9ae6e0 库存调整记录添加状态; 2026-02-05 16:49:05 +08:00
秦鸿展 532d163f7a Merge branch 'dev_qinhongzhanWMS' into wms_dev 2026-02-05 16:46:34 +08:00
秦鸿展 14dcecb5d4 仓库编码模糊查询 2026-02-05 16:46:12 +08:00
王奎兴 46f53855f9 去除多余方法; 2026-02-05 15:21:22 +08:00
王奎兴 5e16ca2436 库存计算判空处理; 2026-02-05 15:00:52 +08:00
赵辉 669583d20a 应收账单创建时间修改 2026-02-05 11:38:02 +08:00
王奎兴 f4ff722b96 出库异常接口报错; 2026-02-05 11:05:09 +08:00
王奎兴 ab4067dd74 出库异常接口报错; 2026-02-05 11:02:10 +08:00
赵辉 37dd75622a 应收账单创建时间修改 2026-02-05 10:48:33 +08:00
zhou-hongcheng 459ac0a809 Merge branch 'dev_lzh_wms_20260120' into wms_dev 2026-02-05 10:48:32 +08:00
zhou-hongcheng da439c9127 任务下发选择用户只显示当前用户登录的仓库已经绑定的账号 2026-02-05 10:33:36 +08:00
王奎兴 147856b289 查询库存增加字段 2026-02-05 10:15:41 +08:00
王奎兴 33657ae3c7 查询库存增加字段 2026-02-05 09:48:08 +08:00
王奎兴 675799100d Merge remote-tracking branch 'origin/wms_dev' into wms_dev 2026-02-05 09:44:32 +08:00
王奎兴 2ff7b8fd6a 查询库存增加字段 2026-02-05 09:44:21 +08:00
秦鸿展 54510f73cd Merge branch 'dev_qinhongzhanWMS' into wms_dev 2026-02-05 09:41:00 +08:00
王奎兴 d3428a7b57 查询库存增加字段 2026-02-05 09:39:58 +08:00
秦鸿展 5f230d03ea 手动分配(取消分配)调整 2026-02-05 09:11:11 +08:00
zhou-hongcheng e6244b94fe Merge branch 'dev_lzh_wms_20260120' into wms_dev 2026-02-04 16:59:57 +08:00
王奎兴 c1cf09c6c4 拣货报错; 2026-02-04 16:30:06 +08:00
王奎兴 ae8bfcafcb 拣货和复核添加体积重量面积逻辑; 2026-02-04 16:06:03 +08:00
zhou-hongcheng d58411eef9 app获取详情接口和pc保持一致 2026-02-04 16:04:18 +08:00
秦鸿展 62c42b3aaa 手动分配(取消分配)代码缺失补全 2026-02-04 15:57:55 +08:00
秦鸿展 f2fb43432e Merge branch 'dev_qinhongzhanWMS' into wms_dev 2026-02-04 15:29:15 +08:00
秦鸿展 99e5258017 入库单新增没有货主修改 2026-02-04 15:28:50 +08:00
王奎兴 07df495135 收货添加面积体积重量; 2026-02-04 15:04:16 +08:00
王奎兴 16b99eb43f 收货升成上架增加面积体积 2026-02-04 14:42:56 +08:00
王奎兴 4149e4b15a 收货升成上架增加面积体积 2026-02-04 14:30:46 +08:00
王奎兴 a55ac20f0e 收货升成上架增加面积体积 2026-02-04 14:29:41 +08:00
王奎兴 b5c29925a8 库存添加单位体积 2026-02-04 14:19:09 +08:00
王奎兴 02b64d8f96 上架添加单位体积等;库存添加单位体积 2026-02-04 14:05:30 +08:00
zhou-hongcheng 06830c2fc1 pda交接作业单图片上传并出库 2026-02-04 13:46:33 +08:00
秦鸿展 9e63ca1e8d Merge branch 'dev_qinhongzhanWMS' into wms_dev 2026-02-04 11:11:29 +08:00
秦鸿展 5189806635 出库单导入调整
上架收货数量为0不生成上架任务
2026-02-04 11:10:58 +08:00
zhou-hongcheng a7e0a00d88 Merge remote-tracking branch 'origin/wms_dev' into wms_dev 2026-02-04 10:41:51 +08:00
zhou-hongcheng 8cfd6d435a pda交接作业单图片上传 2026-02-04 10:41:35 +08:00
秦鸿展 296f9a2818 Merge remote-tracking branch 'origin/wms_dev' into wms_dev 2026-02-04 10:30:14 +08:00
秦鸿展 09c612bbd9 入库单导入修改调整 2026-02-04 10:29:52 +08:00
王奎兴 eb015c79d3 库存调整查询修改; 2026-02-04 10:05:23 +08:00
王奎兴 eb46fb1cc3 库存调整查询修改; 2026-02-04 09:40:54 +08:00
zhou-hongcheng 4cbb338425 Merge branch 'dev_lzh_wms_20260120' into wms_dev 2026-02-04 09:37:14 +08:00
zhou-hongcheng b8e61e097b pda库存查询报错bug修改 2026-02-04 09:36:10 +08:00
秦鸿展 0ce069af7b Merge branch 'dev_qinhongzhanWMS' into wms_dev 2026-02-03 17:50:56 +08:00
秦鸿展 d436601507 出库管理手动分配调整 2026-02-03 17:50:20 +08:00
王奎兴 10fc266705 库存调整创建人; 2026-02-03 17:21:01 +08:00
秦鸿展 db313639db Merge branch 'dev_qinhongzhanWMS' into wms_dev 2026-02-03 16:50:16 +08:00
秦鸿展 939d15b521 出库管理手动分配调整 2026-02-03 16:49:49 +08:00
zhou-hongcheng 910e1bac83 Merge branch 'dev_lzh_wms_20260120' into wms_dev 2026-02-03 16:08:54 +08:00
zhou-hongcheng 0194adc794 修改密码后不能用新密码登录bug 2026-02-03 14:30:54 +08:00
王奎兴 0e87b0d4b1 及时库存查询逻辑修改; 2026-02-03 14:02:42 +08:00
王奎兴 54631a0101 及时库存查询修改添加别名; 2026-02-03 13:58:26 +08:00
王奎兴 e495aae1a1 及时库存查询修改; 2026-02-03 13:42:40 +08:00
王奎兴 a655870fbe 库存copy方法修改; 2026-02-03 11:49:24 +08:00
王奎兴 99602b3782 查询库存逻辑修改; 2026-02-03 11:32:57 +08:00
王奎兴 3d24f32c9d 查询库存逻辑修改; 2026-02-03 11:24:45 +08:00
王奎兴 a2780dc9dc 查询库存逻辑修改; 2026-02-03 11:01:07 +08:00
王奎兴 2b0a582a5a 查询库存逻辑修改; 2026-02-03 10:48:19 +08:00
王奎兴 2c27ce7031 sql修改; 2026-02-03 10:33:29 +08:00
王奎兴 2ee208c50e 实体类字段注释; 2026-02-03 10:19:49 +08:00
高正杨 d4f6965fb5 库存实体类字段修改; 2026-02-03 10:13:16 +08:00
王奎兴 b34b7d8792 库存及调整记录 添加创建人信息; 2026-02-03 09:44:37 +08:00
秦鸿展 3c3f6a2bc8 Merge branch 'dev_qinhongzhanWMS' into wms_dev 2026-02-02 17:16:33 +08:00
秦鸿展 0fd00ed65d 出库bug调整 2026-02-02 17:15:42 +08:00
zhou-hongcheng 60825ebe9d Merge remote-tracking branch 'origin/wms_dev' into wms_dev 2026-02-02 15:56:15 +08:00
zhou-hongcheng 9b9ea1c0a5 Merge branch 'dev_lzh_wms_20260120' into wms_dev 2026-02-02 15:55:58 +08:00
zhou-hongcheng 38e7606a71 移位管理详情位置信息错误bug 2026-02-02 15:54:07 +08:00
秦鸿展 20422aeb83 Merge branch 'dev_qinhongzhanWMS' into wms_dev 2026-02-02 14:59:25 +08:00
秦鸿展 558fdde064 出库修改调整 2026-02-02 14:58:53 +08:00
zhou-hongcheng 56db83a80d Merge branch 'dev_lzh_wms_20260120' into wms_dev 2026-02-02 14:53:02 +08:00
zhou-hongcheng 6af1bd8aa0 移位管理修改和新增共用同一个方法bug修改 2026-02-02 14:52:24 +08:00
王奎兴 99d0e2593d Merge remote-tracking branch 'origin/wms_dev' into wms_dev 2026-02-02 13:42:13 +08:00
王奎兴 821f1bf956 上架修改库存; 2026-02-02 13:41:47 +08:00
秦鸿展 29aa101654 Merge branch 'dev_qinhongzhanWMS' into wms_dev 2026-02-02 13:33:20 +08:00
秦鸿展 2190fcf623 库内(移位、盘点)批次属性修改
出库管理调整修改
2026-02-02 13:31:29 +08:00
秦鸿展 e439b71467 Merge branch 'dev_qinhongzhanWMS' into wms_dev 2026-02-02 09:35:40 +08:00
秦鸿展 d91779cf5c 上架库存注释 2026-02-02 09:34:55 +08:00
秦鸿展 2b70f25fae 上架修改 2026-02-02 09:34:27 +08:00
zhou-hongcheng 440129373c 交接作业单任务下发优化 2026-02-02 09:27:51 +08:00
赵辉 7f6d04e122 oms修改 2026-02-02 08:39:31 +08:00
zhou-hongcheng ef698c2fa1 Merge branch 'dev_lzh_wms_20260120' into wms_dev 2026-01-30 17:52:24 +08:00
zhou-hongcheng caf926f503 交接作业单任务下发 2026-01-30 17:51:44 +08:00
zhou-hongcheng 7644dc8fc5 任务列表转交 2026-01-30 16:53:51 +08:00
王奎兴 4363235bfb 上架库存调整记录; 2026-01-30 16:23:16 +08:00
王奎兴 089b7535b5 及时库存查询修改; 2026-01-30 15:30:32 +08:00
秦鸿展 81633720e3 入库管理修改 2026-01-30 15:20:46 +08:00
秦鸿展 fe096a498f 上架的批次属性显示修改 2026-01-30 11:31:11 +08:00
王奎兴 9aa72e44d7 上架修改库存; 2026-01-30 10:49:44 +08:00
高正杨 d914f48ef0 发单报found2; 2026-01-30 10:25:08 +08:00
秦鸿展 32dbc85026 Merge branch 'dev_qinhongzhanWMS' into wms_dev 2026-01-30 10:12:33 +08:00
秦鸿展 fe5880890e 收货的更多属性显示修改 2026-01-30 10:12:03 +08:00
zhou-hongcheng 43b3773e3e Merge branch 'dev_lzh_wms_20260120' into wms_dev 2026-01-30 09:15:39 +08:00
zhou-hongcheng 480d50f9da 货主租赁明细批量修改 2026-01-30 09:15:05 +08:00
秦鸿展 cd79abeb32 Merge branch 'dev_qinhongzhanWMS' into wms_dev 2026-01-29 17:26:34 +08:00
秦鸿展 43aec4ac0d 批次规则bug修改 2026-01-29 17:26:05 +08:00
王奎兴 2a9f715406 上架修改库存; 2026-01-29 16:51:47 +08:00
zhou-hongcheng 52779f0196 Merge branch 'dev_lzh_wms_20260120' into wms_dev 2026-01-29 14:46:31 +08:00
zhou-hongcheng db86df135a 仓库出租率功能模块 2026-01-29 14:44:27 +08:00
秦鸿展 e0d3e40847 批次规则的修改 2026-01-29 14:03:38 +08:00
秦鸿展 6787c17b00 Merge branch 'dev_qinhongzhanWMS' into wms_dev 2026-01-29 13:50:36 +08:00
秦鸿展 49cdce7b9c 批次规则的修改 2026-01-29 13:50:03 +08:00
hjx 5786521755 去掉货主判断 2026-01-29 11:43:01 +08:00
王奎兴 6bea09744f 及时库存; 2026-01-29 09:16:47 +08:00
赵辉 62b779d1f0 oms 2026-01-29 09:15:04 +08:00
hjx 58f2e70f21 异常修改 2026-01-29 09:03:07 +08:00
赵辉 9dd3be3507 oms发单 2026-01-29 08:52:18 +08:00
hjx 6adcc406b9 执行单取消下发 2026-01-28 19:50:20 +08:00
赵辉 5b2d4569a7 oms发单 2026-01-28 19:18:53 +08:00
hjx 126a826513 执行单下发 2026-01-28 17:58:51 +08:00
王奎兴 373600aba2 及时库存; 2026-01-28 16:34:36 +08:00
王奎兴 d143ca2840 库存调整记录修改; 2026-01-28 15:51:05 +08:00
王奎兴 0652ccecf4 取消分配; 2026-01-28 15:41:03 +08:00
赵辉 e5476beb07 oms发单 2026-01-28 15:22:53 +08:00
王奎兴 04ed2148a7 库存调整记录修改; 2026-01-28 15:15:46 +08:00
王奎兴 dc09743357 Merge remote-tracking branch 'origin/wms_dev' into wms_dev 2026-01-28 15:02:20 +08:00
王奎兴 347767ffc2 出库物料明细修改; 2026-01-28 15:02:09 +08:00
秦鸿展 7926235114 Merge branch 'dev_qinhongzhanWMS' into wms_dev 2026-01-28 14:49:39 +08:00
王奎兴 2710c97f42 库存调整记录修改; 2026-01-28 14:49:15 +08:00
秦鸿展 4b9c2978ae 入库管理查询仓库修改 2026-01-28 14:49:11 +08:00
王奎兴 ff682a47f4 库存调整记录修改; 2026-01-28 14:43:45 +08:00
zhou-hongcheng b72134a936 租赁管理补充仓库和货主字段 2026-01-28 14:34:19 +08:00
王奎兴 7c6745bdd1 库存调整记录修改; 2026-01-28 14:29:58 +08:00
王奎兴 17e1937be4 修改库存加锁; 2026-01-28 14:07:18 +08:00
王奎兴 8dbbaa54b9 商品名称逻辑修改; 2026-01-28 13:42:55 +08:00
王奎兴 addb2fd96e Merge remote-tracking branch 'origin/wms_dev' into wms_dev 2026-01-28 13:32:54 +08:00
王奎兴 db34025a4b 商品名称逻辑修改; 2026-01-28 13:32:44 +08:00
秦鸿展 59df615137 Merge branch 'dev_qinhongzhanWMS' into wms_dev 2026-01-28 13:30:18 +08:00
秦鸿展 d9ec7cd352 入库管理收货打印修改 2026-01-28 13:29:50 +08:00
赵辉 e26dc853d5 oms发单 2026-01-28 13:20:09 +08:00
王奎兴 8a3af8a13e 商品名称逻辑修改; 2026-01-28 11:35:50 +08:00
王奎兴 7dde79c61f 出库列表查询修改; 2026-01-28 10:31:35 +08:00
王奎兴 1c83d70437 库存操作记录; 2026-01-28 10:10:50 +08:00
秦鸿展 c88d22c185 Merge remote-tracking branch 'origin/wms_dev' into wms_dev 2026-01-28 09:53:31 +08:00
秦鸿展 115eb3f791 Merge branch 'dev_qinhongzhanWMS' into wms_dev 2026-01-28 09:52:34 +08:00
王奎兴 d7e5699410 库存操作记录; 2026-01-28 09:52:24 +08:00
秦鸿展 00dacdae19 入库管理收货、上架数量修改 2026-01-28 09:51:58 +08:00
hjx bbbb0b835d 下发操作 2026-01-27 21:34:02 +08:00
hjx 3b9983c68f OMS执行单开发 2026-01-27 19:28:53 +08:00
王奎兴 277dc19988 Merge remote-tracking branch 'origin/wms_dev' into wms_dev 2026-01-27 17:23:22 +08:00
王奎兴 76fff6437d 出库流程操作库存;出库单导入调整; 2026-01-27 17:23:06 +08:00
秦鸿展 0738c939ae 入库管理修改bug1 2026-01-27 15:22:42 +08:00
秦鸿展 da34a284d2 Merge branch 'dev_qinhongzhanWMS' into wms_dev 2026-01-27 13:50:56 +08:00
秦鸿展 15b5c5443d 入库管理修改bug 2026-01-27 13:50:19 +08:00
hjx a52984b103 业务单添加预约单字段 2026-01-27 11:25:15 +08:00
hjx 79ca006214 业务单和执行单开发 2026-01-27 11:03:31 +08:00
zhou-hongcheng d25a957f13 盘点管理编辑删除子项bug 2026-01-27 10:37:11 +08:00
zhou-hongcheng 714bb1cce4 盘点管理编辑 2026-01-27 10:24:01 +08:00
zhou-hongcheng 2afe2061af 移位管理移位数量赋值 2026-01-27 10:00:39 +08:00
zhou-hongcheng 18d479b55e 移位管理修改保存bug 2026-01-27 09:25:22 +08:00
秦鸿展 d9faab242a Merge branch 'dev_qinhongzhanWMS' into wms_dev 2026-01-26 17:33:56 +08:00
秦鸿展 7f35e4b375 入库管理修改 2026-01-26 17:32:23 +08:00
zhou-hongcheng 0512713541 Merge branch 'dev_lzh_wms_20260120' into wms_dev 2026-01-26 17:25:00 +08:00
zhou-hongcheng 04a7dedbca 同步wms物料增加币制 2026-01-26 17:22:27 +08:00
王奎兴 797f2db7c1 出库流程; 2026-01-26 17:04:40 +08:00
zhou-hongcheng 1f8f89264b 同步wms物料规格型号 2026-01-26 16:51:16 +08:00
zhou-hongcheng 93a4afbacc 完成移位容器逻辑注释 2026-01-26 16:45:54 +08:00
zhou-hongcheng bc4e60a408 完成移位获取详情时sql错误 2026-01-26 14:17:29 +08:00
zhou-hongcheng 5b86965586 物料system同步wms内容 2026-01-26 11:41:28 +08:00
zhou-hongcheng b62a8eb7cf Merge branch 'dev_lzh_wms_20260120' into wms_dev 2026-01-26 11:18:14 +08:00
zhou-hongcheng 1fadbbdec5 物料wms模块回滚之前修改 2026-01-26 11:17:38 +08:00
zhou-hongcheng df671374b3 物料新增system模块 2026-01-26 09:50:54 +08:00
王奎兴 985effdaa3 出库明细; 2026-01-24 17:42:05 +08:00
秦鸿展 cf19750fe0 Merge branch 'dev_qinhongzhanWMS' into wms_dev 2026-01-24 17:39:19 +08:00
秦鸿展 5c83fd1559 入库管理导入bug修改1 2026-01-24 17:38:45 +08:00
zhou-hongcheng 732bfa1f5a Merge branch 'dev_lzh_wms_20260120' into wms_dev 2026-01-24 17:20:53 +08:00
zhou-hongcheng 1997aa2e8d 物料修改 2026-01-24 16:19:44 +08:00
秦鸿展 574bd553e7 Merge branch 'dev_qinhongzhanWMS' into wms_dev 2026-01-24 15:46:31 +08:00
秦鸿展 31dae7ecf6 入库管理导入bug修改 2026-01-24 15:45:58 +08:00
zhou-hongcheng 12a5cc6129 批次详情的子项修改实际为新增新的一条bug修复 2026-01-24 15:35:09 +08:00
zhou-hongcheng 5bde552f18 无聊详情回显库存预警 2026-01-24 13:13:43 +08:00
zhou-hongcheng 03860eb30a Merge branch 'dev_lzh_wms_20260120' into wms_dev 2026-01-24 11:37:49 +08:00
zhou-hongcheng 276138394e 去掉库区库位 2026-01-24 11:37:12 +08:00
秦鸿展 fea66b5e28 Merge branch 'dev_qinhongzhanWMS' into wms_dev 2026-01-24 11:35:12 +08:00
秦鸿展 d641a757f6 入库管理bug修改 2026-01-24 11:34:41 +08:00
王奎兴 2fc8fa8331 出库明细; 2026-01-24 11:08:39 +08:00
秦鸿展 b3eb3f9963 解决DTO 2026-01-23 15:54:22 +08:00
秦鸿展 254fa94512 冲突解决 2026-01-23 15:46:31 +08:00
秦鸿展 02736c16f2 Merge branch 'dev_qinhongzhanWMS' into wms_dev
# Conflicts:
#	mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/materialBaseInfo/MaterialBaseInfoDTO.java
2026-01-23 15:44:09 +08:00
秦鸿展 186c5d1b94 WMS入库管理模块bug修改 2026-01-23 15:42:37 +08:00
王奎兴 b2d0602a6b Merge branch 'dev_wkx_wms_20260120' into wms_dev 2026-01-23 15:34:45 +08:00
王奎兴 16c46565f5 库存添加字段; 2026-01-23 15:33:46 +08:00
zhou-hongcheng 3196c3416a Merge branch 'dev_lzh_wms_20260120' into wms_dev 2026-01-23 15:31:44 +08:00
zhou-hongcheng a51e6e3f3d 配置 2026-01-23 15:30:46 +08:00
zhou-hongcheng 6255279979 物料管理增加规格 2026-01-23 15:30:30 +08:00
zhou-hongcheng 7802b28143 新增货主后列表不展示bug修改 2026-01-23 15:30:01 +08:00
秦鸿展 ca4b1ce2a3 Merge branch 'dev_qinhongzhanWMS' into wms_dev 2026-01-23 08:42:33 +08:00
秦鸿展 581421da33 WMS入库单bug修改 2026-01-23 08:41:41 +08:00
王奎兴 bf4b1d9568 出库单导入; 2026-01-22 17:30:25 +08:00
zhou-hongcheng 805740f78c 物料管理新增字段 2026-01-22 17:28:46 +08:00
王奎兴 fa650c7ef7 出库单导入; 2026-01-22 15:35:22 +08:00
王奎兴 e1411e1fe7 出库单导入; 2026-01-22 14:10:02 +08:00
秦鸿展 65a3d4d5c9 WMS入库单修改 2026-01-22 13:24:45 +08:00
王奎兴 d9d75bd0cf 出库单导入; 2026-01-22 13:20:15 +08:00
王奎兴 4dfa961a58 出库单导入; 2026-01-22 13:10:35 +08:00
秦鸿展 5cae9b8fa7 WMS入库单修改 2026-01-22 12:38:50 +08:00
zhou-hongcheng 55b6554216 物料管理批次bug和品牌idbug 2026-01-22 11:36:47 +08:00
zhou-hongcheng 9e8f0f195a 货主管理新增字段 补充备注 2026-01-21 16:54:26 +08:00
zhou-hongcheng f3f10d10db 租赁管理 2026-01-21 16:06:32 +08:00
秦鸿展 db28bab895 WMS入库单 2026-01-21 09:56:49 +08:00
zhou-hongcheng fe174b45ef 货主管理新增字段 2026-01-20 16:09:23 +08:00
王奎兴 a2e3f23798 nc推送地址修改 2026-01-20 16:04:51 +08:00
zhou-hongcheng 2cf42f6e06 修改bug添加子项保存不上,和查询子项查询不到 2026-01-20 14:53:56 +08:00
王奎兴 7a45568be6 nc推送地址修改 2026-01-20 14:03:38 +08:00
王奎兴 8ba0c64b62 nc推送地址修改 2026-01-20 14:01:13 +08:00
王奎兴 bd9cfe50f8 wms启动改动 2026-01-20 10:48:16 +08:00
秦鸿展 a52049eab3 Merge remote-tracking branch 'origin/dev' into dev 2026-01-20 08:45:51 +08:00
秦鸿展 f283c66278 数据权限BUG修改 2026-01-20 08:45:30 +08:00
hjx 23964e5e6d wms修改打包组件和docker文件 2026-01-19 20:58:56 +08:00
hjx 22d5a1ea3f nc组装报文修改 2026-01-19 20:53:49 +08:00
hjx 258417cac7 nc改成测试环境 2026-01-19 18:59:52 +08:00
hjx a7b7e2c82d nc改成测试环境 2026-01-19 18:58:56 +08:00
hjx 1655d57057 集成wms服务模块 2026-01-19 18:55:23 +08:00
hjx 88ac989ced 南歧nc推送税费金额修改 2026-01-19 16:55:50 +08:00
秦鸿展 aab59723f9 Merge remote-tracking branch 'origin/dev' into dev 2026-01-19 15:32:30 +08:00
秦鸿展 7f8732dd02 选择车队不一致修改 2026-01-19 15:32:00 +08:00
hjx 56356839bf 集成oms服务模块 2026-01-19 15:20:20 +08:00
hjx 1837337488 南歧nc推送 2026-01-16 16:43:50 +08:00
hjx e342fa92a8 南歧nc推送 2026-01-16 15:54:28 +08:00
hjx ae76596503 南歧nc推送 2026-01-16 15:46:28 +08:00
hjx b25c795d4e 正式环境配置 2026-01-16 13:30:16 +08:00
hjx b6f5ed6dab 类别查询修改 2026-01-16 11:47:46 +08:00
hjx 90e6ec8086 测试环境配置 2026-01-16 10:47:22 +08:00
hjx ff334b155c 费用科目查询修改 2026-01-16 10:08:01 +08:00
hjx 2fa97d50e1 测试环境配置 2026-01-15 14:49:09 +08:00
hjx 9efd0426d4 nc南歧应收单推送修改 2026-01-15 14:47:54 +08:00
王奎兴 f6231256d5 配置文件; 2026-01-15 14:31:31 +08:00
王奎兴 e6d91c8d1d 打印去重; 2026-01-15 11:55:21 +08:00
王奎兴 7e50d8d5c6 打印去重; 2026-01-15 11:52:58 +08:00
王奎兴 ea771777bb Merge remote-tracking branch 'origin/master' 2026-01-15 11:45:58 +08:00
王奎兴 84e1767812 打印去重; 2026-01-15 11:45:33 +08:00
hjx 744cbc532b nc收款单推送修改 2026-01-15 11:41:51 +08:00
hjx 355953940a Merge remote-tracking branch 'origin/master' into master 2026-01-15 11:35:40 +08:00
hjx 70dd99d497 nc收款单推送修改 2026-01-15 11:35:30 +08:00
王奎兴 eb98e9e4bd 打印去重; 2026-01-15 11:29:08 +08:00
王奎兴 52f5b6e0d6 Merge branch 'refs/heads/test' 2026-01-15 07:56:41 +08:00
王奎兴 0b584352cb 配置文件 2026-01-15 07:54:26 +08:00
hjx dfd7b34172 nc判断科目金额是否大于0 2026-01-15 07:38:34 +08:00
hjx 015162d5c9 Merge branch 'dev' into master
# Conflicts:
#	mhd-auth/src/main/resources/bootstrap.yml
#	mhd-gateway/src/main/resources/bootstrap.yml
#	mhd-user-center/src/main/resources/bootstrap.yml
#	mhd_finance/src/main/java/com/linke/finance/domain/reconciliation/repository/persistence/ReconciliationImpl.java
2026-01-15 03:36:33 +08:00
hjx e6b81b38ee 测试环境配置 2026-01-15 03:10:13 +08:00
hjx b3355cd1d0 测试环境配置 2026-01-15 02:47:42 +08:00
hjx 9da953619f nc通宇修改 2026-01-15 02:40:58 +08:00
hjx 781d530c21 NC推送修改 2026-01-15 01:54:11 +08:00
hjx 419cb53845 查询科目信息修改 2026-01-15 01:37:04 +08:00
hjx f73f74939f 通宇nc修改 2026-01-15 00:45:29 +08:00
hjx 8ea215c58c 通宇组装摘要修改 2026-01-14 23:45:54 +08:00
王奎兴 4bde2aee3d 配置文件 2026-01-14 23:30:43 +08:00
王奎兴 9996f59fe4 角色管理查询不过滤RoleGrade 2026-01-14 23:25:17 +08:00
王奎兴 e5f8ddd8b6 配置文件修改; 2026-01-14 22:31:02 +08:00
王奎兴 0533d1a941 Merge branch 'refs/heads/test' into dev 2026-01-14 22:28:59 +08:00
王奎兴 536079a024 发票打印修改; 2026-01-14 22:28:27 +08:00
hjx a648c4a50d 应收账单科目修改 2026-01-14 22:01:21 +08:00
hjx a484296ab8 应收账单查询科目信息 2026-01-14 19:03:28 +08:00
hjx 1708b4384c 应收账单保存科目信息和nc推送修改 2026-01-14 17:24:20 +08:00
王奎兴 8d89f5ec27 应收账单结算页面结算币种 2026-01-14 16:46:00 +08:00
王奎兴 84ab2c8bf9 Merge remote-tracking branch 'refs/remotes/origin/dev' into test
# Conflicts:
#	mhd-gateway/src/main/resources/bootstrap.yml
#	mhd-modules/mhd-system/src/main/resources/bootstrap.yml
2026-01-14 16:40:52 +08:00
hjx 14cfad6b50 修改科目创建订单默认显示设置 2026-01-14 15:20:06 +08:00
hjx abf2847475 科目信息修改 2026-01-14 14:56:25 +08:00
王奎兴 65552144eb Merge branch 'dev_wkx_yutong_20260106' into dev 2026-01-14 14:25:08 +08:00
王奎兴 2558e1ab2a 应收账单结算页面结算币种 2026-01-14 10:59:42 +08:00
高正杨 64d2a5e001 发单报found2; 2026-01-14 09:46:37 +08:00
高正杨 801a7c3b9c equals判空; 2026-01-14 08:33:56 +08:00
1745237360-cloud 932c432eff Merge remote-tracking branch 'origin/dev' into dev 2026-01-13 20:43:18 +08:00
1745237360-cloud 6606c65d73 数据权限的bug修改260113 2026-01-13 20:43:04 +08:00
王奎兴 89b5d544c6 Merge branch 'dev_wkx_yutong_20260106' into dev 2026-01-13 18:54:45 +08:00
王奎兴 8f0d4ed687 委托方查询结算币种 2026-01-13 18:54:18 +08:00
王奎兴 e77897c597 委托方查询结算币种 2026-01-13 18:48:00 +08:00
hjx 931d63a5da nc对接修改添加通宇 2026-01-13 17:26:59 +08:00
1745237360-cloud 8924757467 Merge remote-tracking branch 'origin/dev' into dev 2026-01-13 15:17:12 +08:00
1745237360-cloud 7476599ffd 数据权限的bug修改260113 2026-01-13 15:16:55 +08:00
hjx bb43850227 Merge remote-tracking branch 'origin/dev' into dev 2026-01-13 14:16:55 +08:00
hjx 32d638730d nc对接修改添加通宇 2026-01-13 14:16:24 +08:00
1745237360-cloud c4bd6d18d4 Merge remote-tracking branch 'origin/dev' into dev
# Conflicts:
#	mhd-user-center/src/main/resources/mapper/UserMapper.xml
2026-01-13 11:34:46 +08:00
1745237360-cloud 035593b419 数据权限的bug修改260113 2026-01-13 11:32:57 +08:00
王奎兴 d7df2da828 委托方查询结算币种 2026-01-12 15:23:19 +08:00
1745237360-cloud 935c154136 Merge remote-tracking branch 'origin/dev' into dev
# Conflicts:
#	mhd_finance/src/main/java/com/linke/finance/application/server/reconciliation/ReconciliationApplicationService.java
2026-01-12 14:32:37 +08:00
1745237360-cloud c8493dd658 数据权限的bug修改 2026-01-12 14:30:00 +08:00
赵辉 d2e8d6ab30 Merge branch 'refs/heads/dev_zh_ty_20260108' into dev 2026-01-12 13:54:15 +08:00
赵辉 540a687f7e 修改副驾绑定 2026-01-12 13:53:01 +08:00
王奎兴 c337a7ed49 委托方查询接口添加结算币种; 2026-01-10 20:39:53 +08:00
1745237360-cloud f7e6f70321 Merge branch 'refs/heads/dev_qinhongzhan' into dev
# Conflicts:
#	mhd-auth/src/main/resources/bootstrap.yml
#	mhd-gateway/src/main/resources/bootstrap.yml
#	mhd-modules/mhd-system/src/main/resources/bootstrap.yml
#	mhd-user-center/src/main/java/com/mhd/user/domain/userAggregate/entity/UserShipperEntity.java
#	mhd-user-center/src/main/resources/bootstrap.yml
#	mhd_finance/src/main/java/com/linke/finance/application/server/reconciliation/ReconciliationApplicationService.java
#	mhd_transport/src/main/java/com/linke/transport/application/service/warehouse/material/command/CreateMaterialCommand.java
2026-01-10 16:45:38 +08:00
1745237360-cloud 4b427e1b2e 数据权限的修改 2026-01-10 16:39:33 +08:00
hjx 2e284f450d nc切换正式地址 2026-01-07 15:55:21 +08:00
hjx af7dda73de Merge branch 'dev' into master
# Conflicts:
#	mhd-auth/src/main/resources/bootstrap.yml
#	mhd-gateway/src/main/resources/bootstrap.yml
#	mhd-modules/mhd-system/src/main/resources/bootstrap.yml
#	mhd-user-center/src/main/resources/bootstrap.yml
2026-01-07 15:04:36 +08:00
王奎兴 3ec71c4a88 Merge remote-tracking branch 'origin/dev_wkx_yutong_20260106' into dev 2026-01-06 18:59:01 +08:00
王奎兴 0db01980b8 物料不选货主也可更新; 2026-01-06 17:48:12 +08:00
hjx 865610fda3 推送nc输出日志 2026-01-06 17:43:18 +08:00
王奎兴 8b98c54d11 Revert "回复大小写敏感;"
This reverts commit 6cb96410a2.
2026-01-05 15:50:23 +08:00
王奎兴 fd579a6f42 nacos配置; 2026-01-05 13:17:16 +08:00
王奎兴 f14547eb53 nacos配置; 2026-01-05 08:42:07 +08:00
王奎兴 e71c9d6e58 nacos配置; 2026-01-04 17:47:39 +08:00
王奎兴 6cb96410a2 回复大小写敏感; 2025-12-31 14:05:07 +08:00
王奎兴 2ddb557bcc nacos修改; 2025-12-30 14:41:03 +08:00
王奎兴 29b24e8450 nacos修改; 2025-12-30 13:50:37 +08:00
王奎兴 04d5ef1645 nacos修改; 2025-12-30 13:18:57 +08:00
王奎兴 dae359655a nacos修改; 2025-12-30 10:56:42 +08:00
王奎兴 40744bb5c1 开通钱包失败取消 2025-12-30 10:54:16 +08:00
王奎兴 d9113d0523 货主不为空取消 2025-12-29 19:02:13 +08:00
王奎兴 6f9b1a6026 nacos 2025-12-26 17:53:55 +08:00
王奎兴 be97110b3c 华为云obs; 2025-12-26 15:35:12 +08:00
王奎兴 3ea4bb8170 华为云obs; 2025-12-26 14:19:38 +08:00
王奎兴 4c560ef88c 华为云obs; 2025-12-26 13:28:46 +08:00
王奎兴 50069a27b0 华为云obs; 2025-12-26 12:28:14 +08:00
hjx 5aa70ed41b 正式环境配置 2025-12-25 16:03:30 +08:00
王奎兴 1259c189b0 华为云obs;结算货币; 2025-12-25 10:20:17 +08:00
王奎兴 a044117187 华为云obs; 2025-12-24 16:19:50 +08:00
王奎兴 dfcac0b5a5 Merge remote-tracking branch 'origin/dev' into dev 2025-12-24 15:41:26 +08:00
王奎兴 b29d0b1f3e 华为云obs; 2025-12-24 15:41:10 +08:00
hjx 5182db6528 Merge remote-tracking branch 'origin/dev' into dev 2025-12-24 10:09:02 +08:00
hjx c8fdea2c3a 测试环境配置 2025-12-24 10:08:43 +08:00
王奎兴 55196b1c14 华为云obs; 2025-12-23 19:55:09 +08:00
王奎兴 7e6b464432 华为云obs; 2025-12-23 16:59:16 +08:00
王奎兴 98af145acb 华为云obs; 2025-12-23 16:18:19 +08:00
王奎兴 1d9629127a 结算币种修改; 2025-12-23 13:38:56 +08:00
hjx b55a782473 测试环境配置 2025-12-19 10:39:08 +08:00
hjx b11a0be679 nc问题修改 2025-12-18 03:35:08 +08:00
hjx 88c3548129 nc问题修改 2025-12-18 03:34:06 +08:00
hjx 9bc90fe601 nc问题修改 2025-12-18 03:08:18 +08:00
hjx d805e2d642 nc问题修改 2025-12-18 01:35:35 +08:00
hjx d2da556697 nc问题修改 2025-12-18 01:30:31 +08:00
hjx 3ee81a06eb nc问题修改 2025-12-18 01:29:02 +08:00
hjx b8799a1ec7 nc问题修改 2025-12-18 00:29:03 +08:00
hjx b00308b729 Merge branch 'dev' into master
# Conflicts:
#	mhd-common/mhd-common-core/src/main/java/minio/MinIoUploadService.java
#	mhd_product/pom.xml
2025-12-17 23:27:46 +08:00
hjx 84a4ee1e76 问题修改 2025-12-17 23:16:58 +08:00
hjx 2c0882ae2d 问题修改 2025-12-17 19:03:43 +08:00
王奎兴 09880952cf 获取网络货运司机id 2025-12-17 18:49:27 +08:00
hjx e3f242f97b 问题修改 2025-12-17 18:41:12 +08:00
hjx bcabed521d 问题修改 2025-12-17 18:02:55 +08:00
王奎兴 2199c8c739 获取网络货运司机id 2025-12-17 17:45:54 +08:00
hjx 8bc07e8090 解决产品启动问题 2025-12-17 10:09:44 +08:00
王奎兴 7ed03628fa mqbug 2025-12-16 23:22:32 +08:00
赵辉 2b3fa73db1 Merge branch 'refs/heads/nanguangmall' into dev 2025-12-16 17:08:56 +08:00
赵辉 c78b9c325c userDriver类中添加车辆主体 2025-12-16 17:02:34 +08:00
王奎兴 6c2fb7c013 bug 2025-12-15 22:15:42 +08:00
赵辉 5cc3b9a62f Merge branch 'refs/heads/nanguangmall' into dev 2025-12-15 17:16:34 +08:00
王奎兴 c27e2b624d 漏扫问题修改; 2025-12-15 17:15:42 +08:00
赵辉 21157b70ed 添加根据用户id查询企业信息 2025-12-15 17:15:16 +08:00
hjx 89e68566bf Merge remote-tracking branch 'origin/dev' into dev 2025-12-14 18:21:47 +08:00
hjx 088460459b 漏洞修改 2025-12-14 18:21:34 +08:00
王奎兴 4a7d28350e Revert "恢复大小写"
This reverts commit 52cdfbe6d9.
2025-12-14 15:12:59 +08:00
hjx 04e26568ae Merge branch 'loudongsaomiao_20251213' into dev 2025-12-14 15:00:38 +08:00
王奎兴 52cdfbe6d9 恢复大小写 2025-12-14 14:29:16 +08:00
赵辉 2b385f45cd Merge branch 'refs/heads/nanguangmall' into dev 2025-12-13 23:07:56 +08:00
赵辉 51b5ae5d13 12.13修改 2025-12-13 23:06:31 +08:00
王奎兴 927b5a4411 Merge remote-tracking branch 'origin/dev_wkx_20251209' into dev 2025-12-13 22:59:55 +08:00
王奎兴 0beab25b52 bug修复; 2025-12-13 22:59:26 +08:00
王奎兴 c830009948 Merge remote-tracking branch 'origin/dev_wkx_20251209' into dev 2025-12-13 22:06:34 +08:00
王奎兴 4248a334ab bug修复; 2025-12-13 22:06:02 +08:00
王奎兴 97330de8ba bug修复; 2025-12-13 20:48:24 +08:00
hjx 133824fb53 漏洞修改 2025-12-13 19:52:26 +08:00
hjx f8399951b3 Merge branch 'dev_nc2k_20251213' into dev
# Conflicts:
#	mhd-auth/src/main/resources/bootstrap.yml
#	mhd-gateway/src/main/resources/bootstrap.yml
#	mhd-modules/mhd-system/src/main/resources/bootstrap.yml
#	mhd-user-center/src/main/resources/bootstrap.yml
#	mhd_finance/src/main/resources/bootstrap.yml
#	mhd_product/src/main/resources/bootstrap.yml
#	mhd_thrid_party/src/main/resources/bootstrap.yml
#	mhd_transport/src/main/resources/bootstrap.yml
2025-12-13 17:32:20 +08:00
hjx 3447d2f7bc nc上传添加字段传值 2025-12-13 17:26:17 +08:00
hjx 8affee1409 漏洞扫描修改 2025-12-13 15:06:42 +08:00
hjx a18fd9d59b 漏洞扫描修改 2025-12-13 15:04:36 +08:00
王奎兴 74e735353f 本地开发分支配置文件修改 2025-12-12 10:16:50 +08:00
王奎兴 afc49be45f 订单发货校验去除; 2025-12-12 10:16:18 +08:00
hjx 61e52aa744 配置文件修改 2025-12-11 14:42:10 +08:00
hjx f485b040e1 配置文件修改 2025-12-11 14:28:35 +08:00
hjx 3d4df0a154 Merge branch 'dev_minio_20251210' into master 2025-12-11 12:38:42 +08:00
hjx d58b948c3a 配置文件修改 2025-12-10 15:05:19 +08:00
hjx c6709936f9 配置文件修改 2025-12-10 14:24:02 +08:00
赵辉 df299a21ae Merge remote-tracking branch 'refs/remotes/origin/dev' into nanguangmall 2025-12-10 09:28:06 +08:00
赵辉 7b10ff2b25 12.9修改 2025-12-10 09:21:33 +08:00
赵辉 0b361ba2b7 12.6修改 2025-12-06 20:31:05 +08:00
赵辉 a950417939 12.5修改 2025-12-05 21:42:06 +08:00
1654 changed files with 180131 additions and 1413 deletions
@@ -275,6 +275,12 @@ public interface SystemServiceFeign {
@GetMapping("/associationWarehouseApi/setWarehouseInfo")
public AjaxResult setWarehouseInfo(@RequestBody AssociationWarehouseFeign associationWarehouseFeign);
/**
* 查询仓库关联的用户ID集合
*/
@GetMapping("/associationWarehouseApi/queryListCorrelationId")
public AjaxResult queryListCorrelationId(@RequestParam(value = "warehouseId", required = false) Long warehouseId);
/**
* 根据code编码查询费用科目
@@ -109,6 +109,13 @@ public interface UserServiceFeign {
@GetMapping("/userApi/getInfo/{userId}")
public AjaxResult getInfo(@PathVariable("userId") Long userId);
/**
* 根据用户ID查询用户详细信息
*/
@ApiOperation("根据用户ID查询用户详细信息")
@GetMapping("/userApi/getInfoByName/{userName}")
public AjaxResult getInfoByName(@PathVariable("userName") String userName);
/**
* 查询车辆绑定的承运人列表
@@ -180,4 +187,8 @@ public interface UserServiceFeign {
@ApiOperation("查询承运人汇总数据")
@GetMapping("/userShipperApi/getShipperSummaryData/{userId}")
public AjaxResult<?> getShipperSummaryData(@PathVariable("userId") Long userId);
}
@ApiOperation("根据用户ID查询货主信息")
@GetMapping("/userShipperApi/getShipperByUserId/{userId}")
public AjaxResult<?> getShipperByUserId(@PathVariable("userId") Long userId);
}
@@ -14,6 +14,7 @@ import com.mhd.common.core.domain.entity.RevenueExpensesRecord;
import com.mhd.common.core.domain.entity.SysConfigSwitch;
import com.mhd.common.core.domain.entity.TmsOrder;
import com.mhd.common.core.domain.po.UserPo;
import com.mhd.common.core.utils.sms.Result;
import com.mhd.common.core.web.domain.AjaxResult;
import com.mhd.system.api.domain.*;
import com.mhd.system.api.feign.FeignAutoConfiguration;
@@ -302,7 +303,13 @@ public interface WlhyServiceFeign {
@GetMapping(value = "/feign/transportNote/selectByOrderNum")
public R<TmsTransportNote> selectByOrderNum(@RequestParam(value = "orderNo") String orderNo);
/**
* 根据发票id查询发票信息
* @param id
* @return
*/
@GetMapping(value = "/feign/invoiceList/selectById")
public R<TmsInvoiceListDetailsVO> selectInvoiceListById(@RequestParam(value = "id") String id);
/**
* 运输单表-支付回调
* @param tmsPayCallbackList
@@ -509,4 +516,17 @@ public interface WlhyServiceFeign {
@PostMapping(value = "/feign/outBoundSummary/getOrderListByReconciliation")
public R<List<TmsOrder>> getOrderListByReconciliation(@RequestBody ReconciliationDTO reconciliationDTO);
@GetMapping(value = "/ntocc/tmsSettlementExchangeRate/queryById")
public Result<?> queryById(@RequestParam(name="id",required=true) String id);
/**
* 数字物流同步网货订单
* @param tmsOrderAddDTO
* @return
*/
@PostMapping("/feign/order/add")
public AjaxResult add(@RequestBody TmsOrderAddDTO tmsOrderAddDTO);
@GetMapping("/feign/order/cancelIssueDocuments")
public AjaxResult cancelIssueDocuments(@RequestParam(name="executeOrderId") String executeOrderId);
}
@@ -3,12 +3,15 @@ package com.mhd.system.api;
import com.mhd.common.core.constant.ServiceNameConstants;
import com.mhd.common.core.web.domain.AjaxResult;
import com.mhd.system.api.domain.MaterialBaseInfoFeign;
import com.mhd.system.api.domain.MaterialInventoryDTO;
import com.mhd.system.api.domain.NoticeOrderDTO;
import com.mhd.system.api.factory.RemoteTicketFeignFallbackFactory;
import com.mhd.system.api.feign.FeignAutoConfiguration;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.*;
import java.util.Map;
/**
* @author ZhouGY
* @title WmsServiceFeign
@@ -57,4 +60,9 @@ public interface WmsServiceFeign {
@PostMapping("/noticeOrderApi/insert")
public AjaxResult stockOutOrInInsert(@RequestBody NoticeOrderDTO noticeOrderDTO);
/**
* 查询物料库存列表不分页
*/
@GetMapping("/materialInventoryApi/listAll")
public AjaxResult materialInventoryApiListAll(MaterialInventoryDTO materialInventoryDTO);
}
@@ -44,6 +44,10 @@ public class BatchDetailFeignPO extends BaseVOEntity{
@Excel(name = "批次标签")
private String batchLabels;
@ApiModelProperty("字段名称")
@Excel(name = "字段名称")
private String fieldName;
@ApiModelProperty("输入控制: 1-必填 2-可选")
@Excel(name = "输入控制: 1-必填 2-可选")
private String inputControl;
@@ -56,6 +60,10 @@ public class BatchDetailFeignPO extends BaseVOEntity{
@Excel(name = "属性选项")
private String attributeOption;
@ApiModelProperty("是否显示: 0-不显示 1-显示")
@Excel(name = "是否显示: 0-不显示 1-显示")
private Integer isDisplay;
@ApiModelProperty("备注")
@Excel(name = "备注")
private String remark;
@@ -181,5 +181,35 @@ public class MaterialBaseInfoFeign extends BaseVOEntity{
@ApiModelProperty("是否公用: 1-是 2-否")
@Excel(name = "是否公用: 1-是 2-否")
private Integer common;
@ApiModelProperty("SKU码")
private String skuCode;
@ApiModelProperty("单价")
private BigDecimal unitPrice;
@ApiModelProperty("原产国")
private String originCountry;
@ApiModelProperty("HS码")
private String hsCode;
@ApiModelProperty("申报单位")
private String declarationUnit;
@ApiModelProperty("法定单位")
private String statutoryUnit;
@ApiModelProperty("法定第二单位")
private String statutorySecondUnit;
/**
* 规格型号
*/
@ApiModelProperty("规格型号")
@Excel(name = "规格型号")
private String specificationModel;
@ApiModelProperty("币制")
private String currency;
}
@@ -0,0 +1,149 @@
package com.mhd.system.api.domain;
import com.mhd.common.core.annotation.Excel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
import java.util.List;
/**
* 物料库存对象 material_inventory
*
* @author gen
* @date 2024-05-29
*/
@Data
public class MaterialInventoryDTO {
private static final long serialVersionUID = 1L;
@ApiModelProperty("物料库存id")
private Long materialInventoryId;
@ApiModelProperty("组织表ID")
@Excel(name = "组织表ID")
private Long organizationId;
@ApiModelProperty("组织名称")
@Excel(name = "组织名称")
private String organizationName;
@ApiModelProperty("一级组织表ID")
@Excel(name = "一级组织表ID")
private Long topOrganizationId;
@ApiModelProperty("物料基础信息id")
@Excel(name = "物料基础信息id")
private Long materialBaseInfoId;
@ApiModelProperty("上架单物料明细id")
@Excel(name = "上架单物料明细id")
private Long materialDetailId;
@ApiModelProperty("仓库id")
@Excel(name = "仓库id")
private Long warehouseId;
@ApiModelProperty("仓库编码")
@Excel(name = "仓库编码")
private String warehouseCode;
@ApiModelProperty("仓库名称")
@Excel(name = "仓库名称")
private String warehouseName;
@ApiModelProperty("库区id")
@Excel(name = "库区id")
private Long storageSectionId;
@ApiModelProperty("库区编码")
@Excel(name = "库区编码")
private String storageCode;
@ApiModelProperty("库区名称")
@Excel(name = "库区名称")
private String storageName;
@ApiModelProperty("库位id")
@Excel(name = "库位id")
private Long storageLocationId;
@ApiModelProperty("库位编码")
@Excel(name = "库位编码")
private String storageLocationCode;
@ApiModelProperty("库位名称")
@Excel(name = "库位名称")
private String storageLocationName;
@ApiModelProperty("批次号")
@Excel(name = "批次号")
private String batchNumber;
@ApiModelProperty("物料状态编码")
@Excel(name = "物料状态编码")
private String materialStatusCode;
@ApiModelProperty("物料状态名称")
@Excel(name = "物料状态名称")
private String materialStatusName;
@ApiModelProperty("容器id")
@Excel(name = "容器id")
private Long containerId;
@ApiModelProperty("容器编码")
@Excel(name = "容器编码")
private String containerCode;
@ApiModelProperty("容器类型 数据字典")
@Excel(name = "容器类型 数据字典")
private String containerType;
@ApiModelProperty("容器类型名称 数据字典")
@Excel(name = "容器类型名称 数据字典")
private String containerTypeName;
@ApiModelProperty("库存数量")
@Excel(name = "库存数量")
private BigDecimal inventoryQuantity;
@ApiModelProperty("可用数量")
@Excel(name = "可用数量")
private BigDecimal allocationQuantity;
@ApiModelProperty("冻结数量")
@Excel(name = "冻结数量")
private BigDecimal freezeQuantity;
@ApiModelProperty("备注")
@Excel(name = "备注")
private String remark;
@ApiModelProperty(name = "组织ID集合")
private List<Long> organizationIdList;
@ApiModelProperty(name = "权限菜单ID")
private Long permissionMenuId;
@ApiModelProperty("盘点是否可用:0-禁用 1-可用")
@Excel(name = "盘点是否可用:0-禁用 1-可用")
private Integer isAble;
@ApiModelProperty("货主信息")
@Excel(name = "货主信息")
private String shipperInfo;
@ApiModelProperty("物料信息")
@Excel(name = "物料信息")
private String materialInfo;
@ApiModelProperty("物料/库位信息")
@Excel(name = "物料/库位信息")
private String storageInfo;
@ApiModelProperty("货主id")
private Long shipperId;
}
@@ -0,0 +1,226 @@
package com.mhd.system.api.domain;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
/**
* @Description: 销项发票表
* @Author: lfs
* @Date: 2020-02-19 08:50:47
* @Version: V1.0
*/
@Data
@TableName("tms_invoice_list")
public class TmsInvoiceList implements Serializable {
private static final long serialVersionUID = 1L;
/**主键*/
@TableId(type = IdType.ID_WORKER_STR)
private String id;
/**发票抬头*/
@ApiModelProperty(value = "发票抬头")
private String invoiceTitle;
/**发票金额*/
@ApiModelProperty(value = "发票金额")
private BigDecimal invoiceValue;
/**发票备注*/
@ApiModelProperty(value = "发票备注")
private String remark;
/**发票状态(0-未开票,1-已取消申请,2-已开票,3-已驳回,4-已寄出,5-已作废)*/
@ApiModelProperty(value = "发票状态(0-未开票,1-已取消申请,2-已开票,3-已驳回,4-已寄出,5-已作废)")
private Integer invoiceState;
/**发票申请时间*/
@ApiModelProperty(value = "发票申请时间")
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
private Date invoiceApplyTime;
/**申请人ID*/
@ApiModelProperty(value = "申请人ID")
private String applicantId;
/**发票申请单号*/
@ApiModelProperty(value = "发票申请单号")
private String applyNumber;
/**驳回原因*/
@ApiModelProperty(value = "驳回原因")
private String rejectReason;
/**运输单ids*/
@ApiModelProperty(value = "运输单ids")
private String transportationIds;
/**退票备注*/
@ApiModelProperty(value = "退票备注")
private String refundRemark;
/**处理人ID(取消申请/开票/驳回)*/
@ApiModelProperty(value = "处理人ID(取消申请/开票/驳回)")
private String managerId;
/**处理时间*/
@ApiModelProperty(value = "处理时间")
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
private Date managerTime;
/**寄出人ID*/
@ApiModelProperty(value = "寄出人ID")
private String sendById;
/**寄出时间*/
@ApiModelProperty(value = "寄出时间")
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
private Date sendTime;
/**寄出邮费*/
@ApiModelProperty(value = "寄出邮费")
private BigDecimal sendPostage;
/**快递公司*/
@ApiModelProperty(value = "快递公司")
private String courierServicesCompany;
/**收件地址id*/
@ApiModelProperty(value = "收件地址id")
private String receivingAddressId;
/**手机号*/
@ApiModelProperty(value = "手机号")
private String phone;
/**收件人姓名*/
@ApiModelProperty(value = "收件人姓名")
private String receivingName;
/**邮政编码*/
@ApiModelProperty(value = "邮政编码")
private String postalCode;
/**所在地区*/
@ApiModelProperty(value = "所在地区")
private String location;
/**创建人*/
@ApiModelProperty(value = "创建人")
private String createBy;
/**创建日期*/
@ApiModelProperty(value = "创建日期")
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
private Date createTime;
/**更新人*/
@ApiModelProperty(value = "更新人")
private String updateBy;
/**更新日期*/
@ApiModelProperty(value = "更新日期")
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
private Date updateTime;
/**是否删除(0-否,1-是)*/
@ApiModelProperty(value = "是否删除(0-否,1-是)")
private Integer isDelete;
/**所属部门*/
@ApiModelProperty(value = "所属部门")
private String sysOrgCode;
/**发票类型(0-增值税专用发票,1-普通发票)*/
@ApiModelProperty(value = "发票类型(0-增值税专用发票,1-普通发票)")
private Integer invoiceType;
/**发票性质(0-纸质发票,1-电子发票)*/
@ApiModelProperty(value = "发票性质(0-纸质发票,1-电子发票)")
private Integer invoiceNature;
/**发票号*/
@ApiModelProperty(value = "发票号")
private String invoiceNumber;
/**快递单号*/
@ApiModelProperty(value = "快递单号")
private String trackingNumber;
/**开票代码*/
@ApiModelProperty(value = "开票代码")
private String invoiceCode;
/**发票详情信息上报状态:0-未上报,1-已上报,2-上报失败*/
@ApiModelProperty(value = "发票详情信息上报状态:0-未上报,1-已上报,2-上报失败")
private Integer isReport;
/**发票详情信息上报失败原因*/
@ApiModelProperty(value = "发票详情信息上报失败原因")
private String errMsg;
/**发票详情信息上报时间*/
@ApiModelProperty(value = "发票详情信息上报时间")
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
private Date reportTime;
@ApiModelProperty(value = "运单事实创建人ID(创建运单时的当前登录人USER-ID)")
private String realCreateBy;
@ApiModelProperty(value = "运单事实创建人名称(创建运单时的当前登录人REAL-NAME)")
private String realCreateName;
@ApiModelProperty(value = "开票时间")
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
private Date invoiceMakeTime;
/**货主信息id*/
@ApiModelProperty(value = "货主信息id")
private String shipperId;
/**货主信息id*/
@ApiModelProperty(value = "货主姓名")
private String shipperName;
/**货主信息id*/
@ApiModelProperty(value = "货主公司名称")
private String companyName;
/**税务登记证号*/
@ApiModelProperty(value = "税务登记证号")
private String taxRegAccount;
/**组织ID*/
@ApiModelProperty(value = "组织ID")
private Long organizationId;
/**组织名称*/
@ApiModelProperty(value = "组织名称")
private String organizationName;
/**一级组织ID*/
@ApiModelProperty(value = "一级组织ID")
private Long topOrganizationId;
}
@@ -0,0 +1,176 @@
package com.mhd.system.api.domain;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
import java.util.Map;
/**
* @Description: 销项发票表
* @Author: lfs
* @Date: 2020-02-19 08:50:47
* @Version: V1.0
*/
@Data
public class TmsInvoiceListDetailsVO implements Serializable {
private static final long serialVersionUID = 1L;
/**主键*/
@TableId(type = IdType.ID_WORKER_STR)
private String id;
/**发票抬头*/
@ApiModelProperty(value = "发票抬头")
private String invoiceTitle;
/**发票金额*/
@ApiModelProperty(value = "发票金额")
private BigDecimal invoiceValue;
/**发票备注*/
@ApiModelProperty(value = "发票备注")
private String remark;
/**发票状态(0-未开票,1-已取消申请,2-已开票,3-已驳回,4-已寄出,5-已作废)*/
@ApiModelProperty(value = "发票状态(0-未开票,1-已取消申请,2-已开票,3-已驳回,4-已寄出,5-已作废)")
private Integer invoiceState;
/**发票申请时间*/
@ApiModelProperty(value = "发票申请时间")
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
private Date invoiceApplyTime;
/**申请人ID*/
@ApiModelProperty(value = "申请人ID")
private String applicantId;
/**驳回原因*/
@ApiModelProperty(value = "驳回原因")
private String rejectReason;
/**退票备注*/
@ApiModelProperty(value = "退票备注")
private String refundRemark;
/**处理人ID(取消申请/开票/驳回)*/
@ApiModelProperty(value = "处理人ID(取消申请/开票/驳回)")
private String managerId;
/**处理时间*/
@ApiModelProperty(value = "处理时间")
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
private Date managerTime;
/**寄出人ID*/
@ApiModelProperty(value = "寄出人ID")
private String sendById;
/**寄出时间*/
@ApiModelProperty(value = "寄出时间")
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
private Date sendTime;
/**寄出邮费*/
@ApiModelProperty(value = "寄出邮费")
private BigDecimal sendPostage;
/**快递公司*/
@ApiModelProperty(value = "快递公司")
private String courierServicesCompany;
/**收件地址id*/
@ApiModelProperty(value = "收件地址id")
private String receivingAddressId;
/**收件姓名*/
@ApiModelProperty(value = "收件姓名")
private String receivingName;
/**收件地址*/
@ApiModelProperty(value = "收件地址")
private String location;
/**手机号*/
@ApiModelProperty(value = "手机号")
private String phone;
/**运输单ids*/
@ApiModelProperty(value = "运输单ids")
private String transportationIds;
/**创建日期*/
@ApiModelProperty(value = "创建日期")
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
private Date createTime;
/**税务登记证号*/
@ApiModelProperty(value = "税务登记证号")
private String taxRegAccount;
/**运输单列表*/
/* @ApiModelProperty(value = "运输单列表")
private List<TmsOrderVO> tmsOrderVOList;*/
/**发票类型(0-增值税专用发票,1-普通发票)*/
@ApiModelProperty(value = "发票类型(0-增值税专用发票,1-普通发票)")
private String invoiceType;
/**发票性质(0-纸质发票,1-电子发票)*/
@ApiModelProperty(value = "发票性质(0-纸质发票,1-电子发票)")
private String invoiceNature;
/**发票号*/
@ApiModelProperty(value = "发票号")
private String invoiceNumber;
/**快递单号*/
@ApiModelProperty(value = "快递单号")
private String trackingNumber;
/**开票表集合*/
@ApiModelProperty(value = "开票表集合")
private List<TmsMakeOutInvoice> tmsMakeOutInvoices;
/**账单项目费用*/
@ApiModelProperty(value = "账单项目费用")
private List<Map<String, Object>> feeList;
/**货主信息id*/
@ApiModelProperty(value = "货主信息id")
private String shipperId;
/**货主信息id*/
@ApiModelProperty(value = "货主姓名")
private String shipperName;
/**货主电话*/
@ApiModelProperty(value = "货主电话")
private String shipperPhone;
/**货主信息id*/
@ApiModelProperty(value = "货主公司名称")
private String companyName;
@ApiModelProperty(value = "统一社会信用代码")
private String regAccount;
}
@@ -0,0 +1,130 @@
package com.mhd.system.api.domain;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
/**
* @Description: 销项发票表
* @Author: lfs
* @Date: 2020-02-19 08:50:47
* @Version: V1.0
*/
@Data
@TableName("tms_make_out_invoice")
public class TmsMakeOutInvoice implements Serializable {
private static final long serialVersionUID = 1L;
/**主键*/
@TableId(type = IdType.ID_WORKER_STR)
private String id;
/**发票ID*/
@ApiModelProperty(value = "发票ID")
private String invoiceId;
/**发票抬头*/
@ApiModelProperty(value = "发票抬头")
private String invoiceTitle;
/**发票金额*/
@ApiModelProperty(value = "发票金额")
private BigDecimal invoiceValue;
/**发票备注*/
@ApiModelProperty(value = "发票备注")
private String remark;
/**发票状态(0-未开票,1-已取消申请,2-已开票,3-已驳回,4-已寄出,5-已作废)*/
@ApiModelProperty(value = "发票状态(0-未开票,1-已取消申请,2-已开票,3-已驳回,4-已寄出,5-已作废)")
private Integer invoiceState;
/**发票申请时间*/
@ApiModelProperty(value = "发票申请时间")
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern="yyyy-MM-dd")
private Date invoiceApplyTime;
/**创建人*/
@ApiModelProperty(value = "创建人")
private String createBy;
/**创建日期*/
@ApiModelProperty(value = "创建日期")
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
private Date createTime;
/**更新人*/
@ApiModelProperty(value = "更新人")
private String updateBy;
/**更新日期*/
@ApiModelProperty(value = "更新日期")
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
private Date updateTime;
/**是否删除(0-否,1-是)*/
@ApiModelProperty(value = "是否删除(0-否,1-是)")
private Integer isDelete;
/**所属部门*/
@ApiModelProperty(value = "所属部门")
private String sysOrgCode;
/**开票号码*/
@ApiModelProperty(value = "开票号码")
private String invoiceNumber;
/**开票人ID*/
@ApiModelProperty(value = "开票人ID")
private String makeOutInvoiceId;
/**开票时间*/
@ApiModelProperty(value = "开票时间")
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
private Date makeOutInvoiceTime;
/**开票代码*/
@ApiModelProperty(value = "开票代码")
private String invoiceCode;
/**上报状态:0-未上报,1-已上报,2-上报失败*/
@ApiModelProperty(value = "上报状态:0-未上报,1-已上报,2-上报失败")
private Integer isReport;
/**上报时间*/
@ApiModelProperty(value = "上报时间")
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
private Date reportTime;
/**失败原因*/
@ApiModelProperty(value = "失败原因")
private String errMsg;
@ApiModelProperty(value = "电子发票地址")
private String invoiceFileUrl;
@ApiModelProperty(value = "发票摘要")
private String invoiceAbstract;
@ApiModelProperty(value = "开票项目")
private String invoiceItem;
@ApiModelProperty(value = "实际开票客户id")
private String actualInvoiceCustomerId;
@ApiModelProperty(value = "实际开票客户名称")
private String actualInvoiceCustomerName;
}
@@ -0,0 +1,771 @@
/*
package com.mhd.system.api.domain;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
import java.util.Map;
*/
/**
* @Description: 货源表
* @Author: lfs
* @Date: 2020-02-14 09:49:27
* @Version: V1.0
*//*
@Data
public class TmsOrderVO implements Serializable {
private static final long serialVersionUID = 1L;
@TableId(type = IdType.ID_WORKER_STR)
private String id = "";
@ApiModelProperty(value = "创建人")
private String createBy = "";
@ApiModelProperty(value = "创建人")
private String createrAvatar = "";
@ApiModelProperty(value = "创建日期")
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
private Date createTime;
@ApiModelProperty(value = "更新人")
private String updateBy = "";
@ApiModelProperty(value = "更新日期")
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
private Date updateTime;
@ApiModelProperty(value = "所属部门")
private String sysOrgCode = "";
@ApiModelProperty(value = "货源单号")
private String goodsNumber = "";
@ApiModelProperty(value = "线路名称ID")
private String lineNameId = "";
@ApiModelProperty(value = "线路名称")
private String lineName = "";
@ApiModelProperty(value = "运距(千米)")
private BigDecimal haulDistance = new BigDecimal("0");
@ApiModelProperty(value = "装货地名称")
private String loadingName = "";
@ApiModelProperty(value = "装货地县区编码")
private String loadingAreaId = "";
@ApiModelProperty(value = "装货地详细地址")
private String loadingAddress = "";
@ApiModelProperty(value = "装货地经度")
private String loadingLongitude = "";
@ApiModelProperty(value = "装货地纬度")
private String loadingLatitude = "";
@ApiModelProperty(value = "装货单位")
private String loadingUnit = "";
@ApiModelProperty(value = "发货人姓名")
private String freighterName = "";
@ApiModelProperty(value = "装货电话")
private String loadingPhone = "";
@ApiModelProperty(value = "装货时间日期(年月日)")
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern="yyyy-MM-dd")
private Date loadingDate;
@ApiModelProperty(value = "装货时间(上午、下午、24小时)")
private String loadingTime = "";
@ApiModelProperty(value = "装货时间id")
private String loadingTimeId;
@ApiModelProperty(value = "卸货地名称")
private String unloadName = "";
@ApiModelProperty(value = "卸货地县区编码")
private String unloadAreaId = "";
@ApiModelProperty(value = "卸货地详细地址")
private String unloadAddress = "";
@ApiModelProperty(value = "卸货地经度")
private String unloadLongitude = "";
@ApiModelProperty(value = "卸货地纬度")
private String unloadLatitude = "";
@ApiModelProperty(value = "卸货单位")
private String unloadUnit = "";
@ApiModelProperty(value = "收货人姓名")
private String dischargerName = "";
@ApiModelProperty(value = "卸货电话")
private String unloadPhone = "";
@ApiModelProperty(value = "卸货时间日期(年月日)")
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern="yyyy-MM-dd")
private Date unloadingData;
@ApiModelProperty(value = "卸货时间(上午、下午、24小时)")
private String unloadingTime = "";
@ApiModelProperty(value = "卸货时间Id")
private String unloadingTimeId = "";
@ApiModelProperty(value = "货物名称ID")
private String goodsNameId = "";
@ApiModelProperty(value = "货物大类型")
private String goodsType="";
@ApiModelProperty(value = "货物小类型")
private String goodsName="";
@ApiModelProperty(value = "重量小(吨)")
private BigDecimal weightMin = new BigDecimal("0");
@ApiModelProperty(value = "重量大(吨)")
private BigDecimal weightMax = new BigDecimal("0");
@ApiModelProperty(value = "货物数量单位(吨/方/件)")
private String goodsUntis = "";
@ApiModelProperty(value = "货物数量单位(吨/方/件)ID")
private String goodsUntisId = "";
@ApiModelProperty(value = "配载方式ID0-数量,1-车次)")
private Integer transportationModeId =0;
@ApiModelProperty(value = "是否接单(0-否,1-是)")
private Integer isOrder = 0;
@ApiModelProperty(value = "配载方式名称")
private String transportationName= "";
@ApiModelProperty(value = "现已承运车次")
private Integer realTrainNumber = 0;
@ApiModelProperty(value = "车型车长ID")
private String carType = "";
@ApiModelProperty(value = "车型车长名称")
private String carTypeName="";
@ApiModelProperty(value = "指定司机ID")
private String appointDriverId = "";
@ApiModelProperty(value = "指定司机姓名")
private String appointDriver = "";
@ApiModelProperty(value = "指定司机电话")
private String appointDriverPhone = "";
@ApiModelProperty(value = "指定司机车牌号")
private String appointDriverLicense = "";
@ApiModelProperty(value = "服务要求ID")
private String serviceRequireId = "";
@ApiModelProperty(value = "服务要求名称")
private String serviceRequire = "";
@ApiModelProperty(value = "备注")
private String remarks = "";
@ApiModelProperty(value = "上游客户ID")
private String upstreamCustomersId = "";
@ApiModelProperty(value = "上游客户姓名")
private String upstreamCustomersName = "";
@ApiModelProperty(value = "上游客户电话")
private String upstreamCustomersPhone = "";
@ApiModelProperty(value = "运单类型(0-企业普货、1-企业批量货、2-撮合货、3-客服运单、4-线下运单)")
private Integer waybillType ;
@ApiModelProperty(value = "运单类型(0-企业普货、1-企业批量货、2-撮合货、3-客服运单、4-线下运单)")
private String waybillTypeName = "";
@ApiModelProperty(value = "运单来源(0-后台发布、1-app发布、2-导入)")
private Integer waybillFrom;
@ApiModelProperty(value = "定金")
private BigDecimal earnestMoney = new BigDecimal("0");
@ApiModelProperty(value = "确认协议重量和")
private BigDecimal agreementWeights = new BigDecimal("0");
@ApiModelProperty(value = "装货重量和")
private BigDecimal loadingNumbers = new BigDecimal("0");
@ApiModelProperty(value = "货源是否关闭(0-否,1-是)")
private Integer isSource = 0;
@ApiModelProperty(value = "货源关闭时间")
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern="yyyy-MM-dd")
private Date sourceCloseTime;
@ApiModelProperty(value = "货源关闭人用户ID")
private String executorId = "";
@ApiModelProperty(value = "是否删除(0-否,1-是)")
private Integer isDelete = 0;
@ApiModelProperty(value = "运输单号")
private String waybillNumber="";
@ApiModelProperty(value = "公司名称")
private String companyName="";
@ApiModelProperty(value = "姓名")
private String shipperName="";
@ApiModelProperty(value = "电话")
private String shipperPhone="";
@ApiModelProperty(value = "用户ID")
private String shipperId = "";
@ApiModelProperty(value = "运输司机ID")
private String transportationDriverId ="";
@ApiModelProperty(value = "运输司机姓名")
private String transportationDriver ="";
@ApiModelProperty(value = "运输司机电话")
private String transportationPhone ="";
@ApiModelProperty(value = "运输车辆ID")
private String transportationCarId ="";
@ApiModelProperty(value = "运输车辆车牌号")
private String transportationPlate = "";
@ApiModelProperty(value = "货源单创建企业ID")
private String createCompanyId = "";
@ApiModelProperty(value = "期望运费")
private BigDecimal freightHope = new BigDecimal("0");
@ApiModelProperty(value = "运输状态(0-待确认,1-运输中,2-已完成,3-待评价,4-已评价,5-已取消,6-已关闭)")
private Integer waybillStatus;
@ApiModelProperty(value = "承运货物数量")
private String loadingNumber ="";
@ApiModelProperty(value = "车队名称")
private String motorcadeName="";
@ApiModelProperty(value = "货物类型ID")
private String goodsTypeId="";
@ApiModelProperty(value = "创建人手机号")
private String phone="";
@ApiModelProperty(value = "创建人名称")
private String realname="";
@ApiModelProperty(value = "货运线路(装货市县)")
private String lineTitleLeft="";
@ApiModelProperty(value = "货运线路(卸货市县)")
private String lineTitleRight="";
@ApiModelProperty(value = "发货时间距当前时间差")
private String daysAgo="";
@ApiModelProperty(value = "交易量")
private String transportCount = "";
@ApiModelProperty(value = "好评率")
private String praiseNumber ="100%";
@ApiModelProperty(value = "装货时间日期(年月日)")
private String loadingDateDay="";
@ApiModelProperty(value = "装货时间日期(年-月-日)")
private String loadingDateTime="";
@ApiModelProperty(value = "卸货时间日期(年-月-日)")
private String unloadingDateTime="";
@ApiModelProperty(value = "卸货时间日期(年月日)")
private String unloadingDateDay="";
@ApiModelProperty(value = "是否为常发货源(0-否,1-是)")
private Integer isCommon = 0;
@ApiModelProperty(value = "审核状态")
private String auditStatus;
@ApiModelProperty(value = "审核状态中文")
private String auditStatusName ="";
@ApiModelProperty(value = "运输单号")
private String transportationNumber="";
@ApiModelProperty(value = "发货运费")
private BigDecimal deliveryFreight = new BigDecimal("0");
@ApiModelProperty(value = "审核人手机号")
private String auditByPhone="";
@ApiModelProperty(value = "审核人")
private String auditBy="";
@ApiModelProperty(value = "审核人名称")
private String auditByName="";
@ApiModelProperty(value = "审核人公司名称")
private String auditByCompanyName="";
@ApiModelProperty(value = "所属公司名称")
private String platformCompanyName;
@ApiModelProperty(value = "运费单价(元/吨)")
private BigDecimal transportationUnitPrice;
@ApiModelProperty(value = "赫达订单号")
private String orderNumber="";
@ApiModelProperty(value = "是否长期货源:0-否,1-是")
private Integer isLongOrder = 0;
@ApiModelProperty(value = "微信小程序图片地址")
private String wxaQrcode="";
@ApiModelProperty(value = "微信小程序AppID")
private String wxaAppID="";
@ApiModelProperty(value = "代运营人员用户ID")
private String orderAgentUserId="";
@ApiModelProperty(value = "代运营人员名称")
private String orderAgentUserName="";
@ApiModelProperty(value = "代运营人员手机")
private String orderAgentUserPhone="";
@ApiModelProperty(value = "公司经营模式(0-总公司,1-总+分公司)")
private Integer isTypeInsuranceUse = 0;
@ApiModelProperty(value = "指定平台公司")
private String appointCompanyId;
@ApiModelProperty(value = "指定平台公司名称")
private String appointCompanyName;
@ApiModelProperty(value = "服务费")
private String serviceRate;
@ApiModelProperty(value = "指定货主编号")
private String appointShipperId;
@ApiModelProperty(value = "指定货主")
private String appointShipper;
@ApiModelProperty(value = "结算方式:1-按趟结算,2-按数量结算")
private Integer radioValue;
@ApiModelProperty(value = "指定平台公司名称")
private String appointCompany;
@ApiModelProperty(value = "短驳装货地址")
private String shortLoadingAddress;
@ApiModelProperty(value = "短驳卸货地址")
private String shortUnloadAddress;
@ApiModelProperty(value = "指定设备号")
private String appointVehicleDevice;
@ApiModelProperty(value = "车牌号")
private String vehicleLicenseNumber;
@ApiModelProperty(value = "司机")
private String driverName;
@ApiModelProperty(value = "指定车辆")
private String appointVehicle;
@ApiModelProperty(value = "发布货源方式 0-未指定;1-企业货源;2-平台货源")
private Integer publishOrderType;
@ApiModelProperty(value = "剩余吨数")
private BigDecimal surplusTonnage;
*/
/**是否开启路耗(0-否 1-是)*//*
@ApiModelProperty(value = "是否开启路耗(0-否 1-是)")
@Excel(name = "是否开启路耗(0-否 1-是)", width = 15)
private Integer isRoadLoss;
*/
/**货物价值(元/吨)*//*
@ApiModelProperty(value = "货物价值(元/吨)")
@Excel(name = "货物价值(元/吨)", width = 15)
private BigDecimal goodsValue=BigDecimal.ZERO;
*/
/**路耗模式(0-按比例% 1-按数量(吨))*//*
@ApiModelProperty(value = "路耗模式(0-按比例% 1-按数量(吨)")
@Excel(name = "路耗模式(0-按比例% 1-按数量(吨)", width = 15)
private Integer roadLossMode;
*/
/**路耗结算方式(0-无 1-取装货重量 2-取卸货重量 3-装卸货取大 4-装卸货取小)*//*
@ApiModelProperty(value = "路耗结算方式(0-无 1-取装货重量 2-取卸货重量 3-装卸货取大 4-装卸货取小)")
@Excel(name = "路耗结算方式(0-无 1-取装货重量 2-取卸货重量 3-装卸货取大 4-装卸货取小)", width = 15)
private Integer roadLossSettlementMethod;
*/
/**允许货物亏损*//*
@ApiModelProperty(value = "允许货物亏损(吨或%")
@Excel(name = "允许货物亏损(吨或%", width = 15)
private BigDecimal allowableLoss=BigDecimal.ZERO;
*/
/**超出亏损扣除金额(元/吨)*//*
@ApiModelProperty(value = "超出亏损扣除金额(元/吨)")
@Excel(name = "超出亏损扣除金额(元/吨)", width = 15)
private BigDecimal lossDeductionAmount=BigDecimal.ZERO;
@ApiModelProperty(value = "上游客户id")
@Excel(name = "上游客户id", width = 15)
private String upClientId="";
@ApiModelProperty(value = "货单二维码图片地址")
private String qrCodeImgUrl;
*/
/**回单付金额*//*
@ApiModelProperty(value = "回单付金额")
@Excel(name = "回单付金额", width = 15)
private BigDecimal receiptPaymentAmount=BigDecimal.ZERO;
*/
/**预付运费金额*//*
@ApiModelProperty(value = "预付现金金额")
@Excel(name = "预付现金金额", width = 15)
private BigDecimal cashAdvance=BigDecimal.ZERO;
*/
/**到付运费金额*//*
@ApiModelProperty(value = "到付运费金额")
@Excel(name = "到付运费金额", width = 15)
private BigDecimal freightAmount=BigDecimal.ZERO;
*/
/**预付平台油卡金额*//*
@ApiModelProperty(value = "预付平台油卡金额")
@Excel(name = "预付平台油卡金额", width = 15)
private BigDecimal oilCardOnline=BigDecimal.ZERO;
@ApiModelProperty(value = "是否协议费用生成:0否 1是")
private Integer isAutoGenerateProtocol;
*/
/**单车重量*//*
@ApiModelProperty(value = "单车重量",required = true)
private BigDecimal singleVehicleWeight;
*/
/**单车总费用*//*
@ApiModelProperty(value = "单车总费用")
@Excel(name = "单车总费用", width = 15)
private BigDecimal freightGross=BigDecimal.ZERO;
@ApiModelProperty(value = "运费抹零 0-不抹零 ,1-抹零小数位,2-抹零个位,3-抹零十位")
private Integer isFreightNullification;
@ApiModelProperty(value = "运费抹零 0-不抹零 ,1-抹零小数位,2-抹零个位,3-抹零十位")
private String isFreightNullificationName;
@ApiModelProperty(value = "是否允许接多单:0否 1是")
private Integer isMultipleOrdersAllowed;
@ApiModelProperty(value = "发货备注")
private String shippingNote;
@ApiModelProperty(value = "绑卡状态 0-未绑卡 1-已绑卡未完成回填 2-已绑卡已完成回填")
private Integer strappedStatus=2;
@ApiModelProperty("应收结算类型:1-月结,2-现结")
private Integer receivableType;
@ApiModelProperty("项目表ID")
private Long projectManagementId;
@ApiModelProperty(value = "接单司机ID")
private String orderDriverId;
@ApiModelProperty(value = "货物数量")
private String goodsQuantity;
@ApiModelProperty(value = "货物数量单位code")
private String goodsQuantityUnitId;
@ApiModelProperty(value = "货物数量单位")
private String goodsQuantityUnit;
@ApiModelProperty(value = "运单数量")
private Integer transportNoteCount=0;
@ApiModelProperty(value = "常用货主id")
private String topOrder;
//=================批量货派单相关=============================
@ApiModelProperty(value = "需求车次")
private Integer demandTrainNumber;
@ApiModelProperty(value = "承运车次默认0")
private Integer carriageNumber;
@ApiModelProperty(value = "剩余需求车次")
private Integer remainingDemandTrainNumber;
*/
/**货物重量*//*
@ApiModelProperty(value = "货物重量")
private BigDecimal goodsWeight;
@ApiModelProperty(value = "货源剩余货物数量")
private BigDecimal residueGoodsWeight;
@ApiModelProperty(value = "承运货物数量")
private BigDecimal transportGoodsWeight;
//=================竞价相关=============================
@ApiModelProperty(value = "查看报价数量")
private Integer quotationQuantity = 0;
@ApiModelProperty(value = "运单模式(0-普通模式,1-竞价模式)")
private Integer waybillMode;
@ApiModelProperty(value = "竞价截止时间")
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
private Date latestBiddingTime;
@ApiModelProperty(value = "预设竞标价")
private BigDecimal presetPrice;
@ApiModelProperty(value = "竞价单位(元/车,元/吨)")
private String biddingUnit;
@ApiModelProperty(value = "最高心理价")
private BigDecimal highestPrice;
@ApiModelProperty(value = "订单状态(1-未审核,2-未通过,3-进行中,4-已完成,5-已关闭)")
private Integer orderStatus;
@ApiModelProperty(value = "货源对应运单数量")
private Integer transportNum = 0;
@ApiModelProperty(value = "货源对应货运单数量")
private Integer truckOrderCount = 0;
@ApiModelProperty(value = "订单模式(0-手动竞价,1-自动竞价,2-普通模式,其他-全部)")
private Integer orderMode;
@ApiModelProperty(value = "评标类型(0-自动评标,1-手动评标)")
private Integer bidEvaluationType;
@ApiModelProperty(value = "订单类型:0-自有订单,1-tms订单")
private Integer orderType;
@ApiModelProperty(value = "多装多卸类型")
private String layType;
@ApiModelProperty(value = "拼单类型(0-不拼单(主单),1-拼单-子单,2-拼单-合单)")
private Integer splicingOrderType;
@ApiModelProperty(value = "拼单发布状态(0-否,1-是)")
private Integer splicingStatus;
@ApiModelProperty(value = "拼单主单id")
private String mainOrderId;
@ApiModelProperty(value = "拼单主单号")
private String mainOrderNum;
@ApiModelProperty(value = "拼单合单id")
private String mergeOrderId;
@ApiModelProperty(value = "拼单合单号")
private String mergeOrderNum;
@ApiModelProperty(value = "来源系统")
private String orderSource;
@ApiModelProperty(value = "通知单号")
private String noticeNumber;
@ApiModelProperty(value = "司机税率")
private BigDecimal driverTaxRate;
@ApiModelProperty(value = "tms到付运费金额")
private BigDecimal tmsFreightAmount;
@ApiModelProperty(value = "订单其他信息")
private Map<String,String> otherOrderInfo;
@ApiModelProperty(value = "订单类型")
private Integer orderShippingType;
@ApiModelProperty(value = "订单类型")
private String orderShippingName;
@ApiModelProperty(value = "付款方")
private String payerTypeName;
@ApiModelProperty(value = "付款方类型(0-委托方,1-收货方)")
@Excel(name = "付款方类型(0-委托方,1-收货方)", width = 15)
private Integer payerType;
@ApiModelProperty(value = "整机编号")
private String machineNumber;
@ApiModelProperty(value = "收货方")
private String recipientName;
@ApiModelProperty(value = "委托方")
private String appointDriverEnterprise;
@ApiModelProperty(value = "收货方id")
private String recipientId;
@ApiModelProperty(value = "委托方id")
private String appointDriverEnterpriseId;
@ApiModelProperty(value = "数字物流平台用户Id")
private Long szwlUserId;
@ApiModelProperty("运费单价")
private BigDecimal freightUnitPrice;
@ApiModelProperty(value = "信息费")
private BigDecimal infoFee;
@ApiModelProperty(value = "信息费状态")
private BigDecimal infoFeeStatus;
@ApiModelProperty(value = "信息费应付单据号")
private String infoFeeDocumentNumber;
@ApiModelProperty(value = "车辆类型Id")
private String vehicleTypeId;
@ApiModelProperty(value = "承运人Id(订单为济南专线使用)")
private String carrier;
@ApiModelProperty(value = "第三方订单号")
private String thirdPartyOrderNumber;
@ApiModelProperty(value = "电子回单状态(0-无状态 1-未上传 2-已上传 3-已拒绝 4-已确认)")
private Integer receiptTotalStatus;
@ApiModelProperty(value = "已收运费")
private BigDecimal collectedFreight;
@ApiModelProperty(value = "未收运费")
private BigDecimal uncollectedFreight;
@ApiModelProperty(value = "订单结算状态:1未出账、2已出账、3部分结算、4已结算")
private Integer settlementStatus;
@ApiModelProperty(value = "订单运费结算时间")
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
private Date settlementTime;
@ApiModelProperty(value = "运单发票开具状态(0-未索取,1-已索取,2-已开票,3-部分索取)")
private Integer isInvoice;
@ApiModelProperty(value = "签收时间")
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
private Date signTime;
@ApiModelProperty(value = "创建人")
private String realCreateName;
@ApiModelProperty(value = "主运单单号")
private String mainOrderNumber;
@ApiModelProperty(value = "信息费账单号")
private String recordNumber;
@ApiModelProperty(value = "信息费收款方")
private String infoFeePayee;
@ApiModelProperty(value = "信息费收款方方式")
private Integer infoFeePayeeType;
@ApiModelProperty(value = "竞价状态 0-竞价中,1-已完成,2-已关闭")
private Integer biddingStatus;
@ApiModelProperty(value = "目的地")
private String destination;
@ApiModelProperty("运费")
private BigDecimal freightCharges;
@ApiModelProperty(value = "开票时间")
@Excel(name = "开票时间", width = 25, format = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
private Date invoiceMakeTime;
@ApiModelProperty("业务员ID")
private String salesmanId;
@ApiModelProperty("业务员ID")
private String salesmanName;
@ApiModelProperty(value = "组织id")
private String orgId;
@ApiModelProperty(value = "所属组织")
@Excel(name = "所属组织", width = 15)
private String orgName;
@ApiModelProperty("是否报关(0:否,1:是)")
private Integer isDeclare;
@ApiModelProperty("线路")
private String route;
@ApiModelProperty("柜类型")
private String containerType;
@ApiModelProperty("柜类型名称")
private String containerTypeName;
@ApiModelProperty("卡类型")
private String cardType;
@ApiModelProperty("卡类型名称")
private String cardTypeName;
@ApiModelProperty("外来柜号")
private String externalContainerNo;
@ApiModelProperty("中转地")
private String transitPlace;
@ApiModelProperty("托运人ID")
private String shipper;
@ApiModelProperty("托运人ID")
private String customsShipper;
@ApiModelProperty("托运人电话")
private String customsShipperTel;
@ApiModelProperty("卸货单位")
private String unloadingCompany;
@ApiModelProperty("合同编号")
private String contractNo;
@ApiModelProperty("运费")
private BigDecimal freightFee;
@ApiModelProperty("卸货费")
private BigDecimal unloadingFee;
@ApiModelProperty("报关费")
private BigDecimal customsFee;
@ApiModelProperty("差货费")
private BigDecimal shortageFee;
@ApiModelProperty("杂费")
private BigDecimal miscellaneousFee;
@ApiModelProperty("其他费用")
private BigDecimal otherFee;
@ApiModelProperty("滞车费")
private BigDecimal detentionFee;
@ApiModelProperty("税率")
private BigDecimal taxRate;
@ApiModelProperty("结算币种")
private String settlementCurrency;
@ApiModelProperty("体积")
private BigDecimal volume;
@ApiModelProperty("内容详情")
private String detailContent;
@ApiModelProperty("报关线路")
private String customsRoute;
@ApiModelProperty("报关关口")
private String customsPort;
@ApiModelProperty("报关联系人")
private String customsContact;
@ApiModelProperty("报关联系人电话")
private String customsContactPhone;
@ApiModelProperty("报关备注")
private String customsRemark;
@ApiModelProperty(value = "单据日期")
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
private Date documentDate;
@ApiModelProperty("组织ID")
private Long organizationId;
@ApiModelProperty("组织名称")
private String organizationName;
@ApiModelProperty("上级组织ID")
private Long topOrganizationId;
//订单审核相关
@ApiModelProperty("审核业务员ID")
private String auditSalesmanId;
@ApiModelProperty("审核业务员")
private String auditSalesmanName;
@ApiModelProperty("业务确认状态")
private Integer businessConfirmStatus;
@ApiModelProperty("业务审核状态")
private Integer businessAuditStatus;
@ApiModelProperty("确认意见")
private String opinion;
@ApiModelProperty("业务主管id")
private String businessManagerId;
@ApiModelProperty("业务主管名称")
private String businessManagerName;
@ApiModelProperty("审核意见")
private String auditOpinion;
@ApiModelProperty("费用科目明细")
private String tmsOrderAccountListJsonStr;
}
*/
@@ -37,5 +37,7 @@ public class UserDTO extends BaseVOEntity {
private Integer userStatus;
@ApiModelProperty(name = "业务类型:0.无状态,1.托运业务,2.承运业务,3.托运、承运业务,4.无业务,5.不确定业务默认为托运业务")
private Integer businessType;
@ApiModelProperty(name = "用户角色")
private String userRole;
}
@@ -219,6 +219,11 @@ public class RemoteSystemFeignFallbackFactory implements FallbackFactory<SystemS
return AjaxResult.error("查询关联仓库列表根据关联id查询失败");
}
@Override
public AjaxResult queryListCorrelationId(Long warehouseId) {
return AjaxResult.error("查询仓库关联的用户ID集合失败");
}
@Override
public AjaxResult getSubInfoByCode(String subjectCode) {
return AjaxResult.error("获取科目信息失败" + throwable.getMessage());
@@ -14,6 +14,7 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.cloud.openfeign.FallbackFactory;
import org.springframework.stereotype.Component;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestParam;
@@ -78,11 +79,17 @@ public class RemoteUserFeignFallbackFactory implements FallbackFactory<UserServi
return AjaxResult.error("根据车辆id查询司机失败:" + throwable.getMessage());
}
@GetMapping("/userApi/getInfo/{userId}")
@Override
public AjaxResult getInfo(Long userId) {
return AjaxResult.error("根据用户ID查询用户详细信息失败:" + throwable.getMessage());
}
@Override
public AjaxResult getInfoByName(String userName) {
return AjaxResult.error("根据用户userName查询用户详细信息失败:" + throwable.getMessage());
}
@Override
public AjaxResult bindDriverShipList(Long vehicleId) {
return AjaxResult.error("查询车辆绑定的承运人列表信息失败:" + throwable.getMessage());
@@ -169,6 +176,11 @@ public class RemoteUserFeignFallbackFactory implements FallbackFactory<UserServi
}
@Override
public AjaxResult<?> getShipperByUserId(Long userId) {
return AjaxResult.error("查询失败" + throwable.getMessage());
}
};
}
}
}
@@ -12,6 +12,7 @@ import com.mhd.common.core.domain.entity.R;
import com.mhd.common.core.domain.entity.SysConfigSwitch;
import com.mhd.common.core.domain.entity.TmsOrder;
import com.mhd.common.core.domain.po.UserPo;
import com.mhd.common.core.utils.sms.Result;
import com.mhd.common.core.web.domain.AjaxResult;
import com.mhd.system.api.WlhyServiceFeign;
import com.mhd.system.api.domain.*;
@@ -211,6 +212,14 @@ public class RemoteWlhyFallbackFactory implements FallbackFactory<WlhyServiceFei
return res;
}
@Override
public R<TmsInvoiceListDetailsVO> selectInvoiceListById(String id) {
R<TmsInvoiceListDetailsVO> res = new R<>();
res.setMsg("获取发票信息失败"+cause.getMessage());
res.setCode(R.FAIL);
return res;
}
@Override
public AjaxResult payCallback(List<TmsPayCallbackDTO> tmsPayCallbackList) {
return AjaxResult.error(cause.getMessage());
@@ -509,6 +518,21 @@ public class RemoteWlhyFallbackFactory implements FallbackFactory<WlhyServiceFei
res.setCode(R.FAIL);
return res;
}
@Override
public Result<?> queryById(String id) {
return null;
}
@Override
public AjaxResult add(TmsOrderAddDTO tmsOrderAddDTO) {
return AjaxResult.error(cause.getMessage());
}
@Override
public AjaxResult cancelIssueDocuments(String executeOrderId) {
return AjaxResult.error(cause.getMessage());
}
};
}
}
@@ -5,6 +5,7 @@ import com.mhd.common.core.web.domain.AjaxResult;
import com.mhd.system.api.WlhyServiceFeign;
import com.mhd.system.api.WmsServiceFeign;
import com.mhd.system.api.domain.MaterialBaseInfoFeign;
import com.mhd.system.api.domain.MaterialInventoryDTO;
import com.mhd.system.api.domain.NoticeOrderDTO;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -12,6 +13,8 @@ import org.springframework.cloud.openfeign.FallbackFactory;
import org.springframework.stereotype.Component;
import org.springframework.web.bind.annotation.PathVariable;
import java.util.Map;
/**
* @author ZhouGY
* @title RemoteWmsFallbackFactory
@@ -46,6 +49,11 @@ public class RemoteWmsFallbackFactory implements FallbackFactory<WmsServiceFeign
public AjaxResult stockOutOrInInsert(NoticeOrderDTO noticeOrderDTO) {
return AjaxResult.error(cause.getMessage());
}
@Override
public AjaxResult materialInventoryApiListAll(MaterialInventoryDTO materialInventoryDTO) {
return AjaxResult.error(cause.getMessage());
}
};
}
}
@@ -38,6 +38,10 @@ public class LoginUser implements Serializable
* 用户名
*/
private String username;
/**
* 用户名
*/
private String realname;
/**
* 登录时间
+7 -8
View File
@@ -12,19 +12,18 @@ spring:
cloud:
nacos:
discovery:
# server-addr: 127.0.0.1:8848
# 线上测试环境配置 容器名+端口号
server-addr: 10.33.0.129:6010
#线上正式环境
# server-addr: 10.102.192.105:6848
server-addr: 10.102.192.5:6848
username: nacos
password: manhuoda@2023
config:
# server-addr: 127.0.0.1:8848
# 线上测试环境配置 容器名+端口号
server-addr: 10.33.0.129:6010
server-addr: 10.102.192.5:6848
username: nacos
password: manhuoda@2023
#线上正式环境
# server-addr: 10.102.192.105:6848
group: DEFAULT_GROUP # 默认分组就是DEFAULT_GROUP,如果使用默认分组可以不配置
file-extension: yml #默认properties
# 共享配置
shared-configs:
- application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}
- application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}
+1 -1
View File
@@ -156,7 +156,7 @@
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.4</version>
<version>1.18.22</version>
</dependency>
<dependency>
@@ -0,0 +1,75 @@
package com.mhd.common.core.domain.dto;
import com.mhd.common.core.annotation.Excel;
import com.mhd.common.core.web.domain.BaseVOEntity;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
import java.util.List;
/**
* 【请填写功能名称】对象 reconciliation_account
*
* @author gen
* @date 2026-01-14
*/
@Data
public class ReconciliationAccountDTO extends BaseVOEntity{
private static final long serialVersionUID = 1L;
@ApiModelProperty("$column.columnComment")
private Long id;
@ApiModelProperty("所属组织")
@Excel(name = "所属组织")
private String orgName;
@ApiModelProperty("组织ID")
@Excel(name = "组织ID")
private Long organizationId;
@ApiModelProperty("一级组织ID")
@Excel(name = "一级组织ID")
private Long topOrganizationId;
@ApiModelProperty("组织名称")
@Excel(name = "组织名称")
private String organizationName;
@ApiModelProperty("应收账单id")
@Excel(name = "应收账单id")
private Long reconciliationId;
@ApiModelProperty("科目id")
@Excel(name = "科目id")
private Long accountId;
@ApiModelProperty("科目收支类型(1-应收,2-应付")
@Excel(name = "科目收支类型", readConverterExp = "科目收支类型(1-应收,2-应付")
private Long accountType;
@ApiModelProperty("科目编码")
@Excel(name = "科目编码")
private String subjectCode;
@ApiModelProperty("科目名称")
@Excel(name = "科目名称")
private String subjectName;
@ApiModelProperty("科目费率")
@Excel(name = "科目费率")
private BigDecimal rate;
@ApiModelProperty("金额")
@Excel(name = "金额")
private BigDecimal amount;
@ApiModelProperty(name = "组织ID集合")
private List<Long> organizationIdList;
@ApiModelProperty(name = "权限菜单ID")
private Long permissionMenuId;
}
@@ -22,6 +22,11 @@ import java.util.List;
public class ReconciliationDTO extends BaseVOEntity{
private static final long serialVersionUID = 1L;
@ApiModelProperty("创建时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
private Date createTime;
@ApiModelProperty("对账单表id")
private Long reconciliationId;
@@ -233,4 +238,7 @@ public class ReconciliationDTO extends BaseVOEntity{
@ApiModelProperty("nc同步状态 0-未同步 1-已同步")
private Integer skSynchronousStatus;
@ApiModelProperty(value = "账单科目明细")
public List<ReconciliationAccountDTO> reconciliationAccountDTOList;
}
@@ -0,0 +1,49 @@
package com.mhd.common.core.domain.dto.wlhy;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date;
/**
* TODO 多装多卸地址DTO
*
* @author LianZhijian
* @version 1.0
* @date 2022-12-16 14:23:22
*/
@Data
public class TmsAddressMultiDTO {
@ApiModelProperty(value = "装卸货地县区编码")
private String areaCode;
@ApiModelProperty(value = "装卸货地名称")
private String areaName;
@ApiModelProperty(value = "装卸货详细地址")
private String address;
@ApiModelProperty(value = "装卸货地经度")
private String longitude;
@ApiModelProperty(value = "装货地纬度")
private String latitude;
@ApiModelProperty(value = "装卸货联系人")
private String contactName;
@ApiModelProperty(value = "装卸货联系人电话")
private String contactPhone;
@ApiModelProperty(value = "装卸货日期(年月日)")
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern="yyyy-MM-dd")
private Date layDate;
@ApiModelProperty(value = "装卸货时间(上午、下午、24小时)")
private String layTime;
@ApiModelProperty(value = "装卸货时间id")
private String layTimeId;
@ApiModelProperty(value = "装卸货类型:0无状态1装货地址2卸货地址")
private Integer layType;
@ApiModelProperty(value = "序号")
private Integer sort;
@ApiModelProperty(value = "简称")
private String shortName;
}
@@ -0,0 +1,82 @@
package com.mhd.common.core.domain.dto.wlhy;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.math.BigDecimal;
/**
* @Description: 货源表
* @Author: lfs
* @Date: 2020-02-14 09:49:27
* @Version: V1.0
*/
@Data
public class TmsCargoInfoDTO implements Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "货单号")
private String orderId;
@ApiModelProperty(value = "物料ID 库存ID 货物类型ID")
private String goodsTypeId;
@ApiModelProperty(value = "货物类型")
private String goodsType;
@ApiModelProperty(value = "货物名称ID")
private String goodsNameId;
@ApiModelProperty(value = "货物名称")
private String goodsName;
@ApiModelProperty(value = "货物数量")
private BigDecimal cargoNum;
@ApiModelProperty(value = "货物重量")
private BigDecimal cargoWeight;
private BigDecimal weight;
@ApiModelProperty(value = "重量单位ID")
private String weightUnitId;
@ApiModelProperty(value = "重量单位名称")
private String weightUnit;
@ApiModelProperty(value = "数量单位ID")
private String quantityUnitId;
@ApiModelProperty(value = "数量单位名称")
private String quantityUnit;
@ApiModelProperty("货物名称")
private String cargoName;
@ApiModelProperty("货物单位ID")
private String cargoUnitId;
@ApiModelProperty("货物单位名字")
private String cargoUnitName;
@ApiModelProperty("整机表编号")
private String machineCode;
@ApiModelProperty("")
private String materialCode;
@ApiModelProperty("体积")
private BigDecimal materialVolume;
@ApiModelProperty("内容")
private String materialContent;
@ApiModelProperty("是否为库存")
private boolean stockFlag;
@ApiModelProperty("货物重量 罐车运输专有字段")
private BigDecimal cargoTonnage;
@ApiModelProperty("价格")
private BigDecimal unitPrice;
@ApiModelProperty("货物类型标识:STOCK-库存,MATERIAL-物料,MANUAL-手动输入")
private String cargoType;
@ApiModelProperty("货物备注")
private String remark;
}
@@ -0,0 +1,476 @@
package com.mhd.common.core.domain.dto.wlhy;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.mhd.common.core.annotation.Excel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.List;
/**
* @Description: 货源表
* @Author: lfs
* @Date: 2020-02-14 09:49:27
* @Version: V1.0
*/
@Data
public class
TmsOrderAddDTO implements Serializable {
private static final long serialVersionUID = 1L;
@TableId(type = IdType.ID_WORKER_STR)
private String id;
// @ApiModelProperty(value = "线路名称ID")
// private java.lang.String lineNameId="";
// @ApiModelProperty(value = "线路名称")
// private java.lang.String lineName="";
//
// @ApiModelProperty(value = "运距(千米)")
// private BigDecimal haulDistance;
@ApiModelProperty(value = "装货地县区编码",required = true)
private String loadingAreaId="";
@ApiModelProperty(value = "装货地详细地址")
private String loadingAddress="";
@ApiModelProperty(value = "发货人姓名")
private String freighterName="";
@ApiModelProperty(value = "装货电话")
private String loadingPhone="";
@ApiModelProperty(value = "装货时间日期(年月日)",required = true)
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern="yyyy-MM-dd")
private java.util.Date loadingDate;
// @ApiModelProperty(value = "装货时间(上午、下午、24小时)")
// private String loadingTime="";
@ApiModelProperty(value = "卸货地县区编码",required = true)
private String unloadAreaId="";
@ApiModelProperty(value = "卸货地详细地址")
private String unloadAddress="";
@ApiModelProperty(value = "收货人姓名")
private String dischargerName="";
@ApiModelProperty(value = "卸货电话")
private String unloadPhone="";
@ApiModelProperty(value = "卸货时间日期(年月日)",required = true)
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern="yyyy-MM-dd")
private java.util.Date unloadingData;
// @ApiModelProperty(value = "装货时间id",required = true)
// private String loadingTimeId;
// @ApiModelProperty(value = "卸货时间id",required = true)
// private String unloadingTimeId;
// @ApiModelProperty(value = "卸货时间(上午、下午、24小时)")
// private java.lang.String unloadingTime;
@ApiModelProperty(value = "货物名称ID")
private String goodsNameId;
@ApiModelProperty(value = "货物名称")
private String goodsName;
@ApiModelProperty(value = "货物名称ID",required = true)
private String goodsTypeId;
@ApiModelProperty(value = "货物大类型")
private String goodsType="";
@ApiModelProperty(value = "重量小(吨)",required = true)
private BigDecimal weightMin;
@ApiModelProperty(value = "重量大(吨)",required = true)
private BigDecimal weightMax;
@ApiModelProperty(value = "货物数量单位(吨/方/件)id",required = true)
private String goodsUntisId;
@ApiModelProperty(value = "配载方式ID0-数量,1-车次)",required = true)
private Integer transportationModeId = 1;
@ApiModelProperty(value = "车型车长ID")
private String carType;
// @ApiModelProperty(value = "指定司机ID")
// private String appointDriverId;
// @ApiModelProperty(value = "司机姓名")
// private String appointDriver;
// @ApiModelProperty(value = "司机手机号")
// private String appointDriverPhone;
// @ApiModelProperty(value = "司机车牌号")
// private String appointDriverLicense;
@ApiModelProperty(value = "服务要求ID")
private String serviceRequireId;
@ApiModelProperty(value = "备注")
private String remarks;
@ApiModelProperty(value = "备注")
private String orderRemark;
// @ApiModelProperty(value = "运单类型(0-企业普货、1-企业批量货、2-撮合货(普通货源)、3-客服运单,4-线下运单)")
// private Integer waybillType ;
@ApiModelProperty(value = "运单类型:0-pc端发货,1-pc端导入,2-货主端app发货")
private Integer waybillFrom = 2 ;
// @ApiModelProperty(value = "期望运费")
// private java.math.BigDecimal freightHope;
// @ApiModelProperty(value = "占用车长")
// private String occupyConductor;
@ApiModelProperty(value = "运单模式(0-普通模式,1-竞价模式)")
private Integer waybillMode = 0;
@ApiModelProperty(value = "竞价截止时间")
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
private java.util.Date latestBiddingTime;
@ApiModelProperty(value = "发货运费")
private BigDecimal deliveryFreight;
@ApiModelProperty(value = "运费单价(元/吨)")
private BigDecimal transportationUnitPrice;
@ApiModelProperty(value = "结算方式,1-按趟结算,2-按数量结算")
private Integer radioValue;
@ApiModelProperty(value = "合同物流导入(0-默认,1-合同,2-普通导入)")
private Integer isContract = 0;
// @ApiModelProperty(value = "是否长期货源:0-否,1-是")
// private Integer isLongOrder=0;
// @ApiModelProperty(value = "卸货单位")
// private java.lang.String unloadUnit;
// @ApiModelProperty(value = "收货人身份证号")
// private String unloadIdentificationNumber;
// @ApiModelProperty(value = "代运营人员用户ID")
// private String orderAgentUserId;
@ApiModelProperty(value = "指定货主编号")
private String appointShipperId;
@ApiModelProperty(value = "指定货主")
private String appointShipper;
// @ApiModelProperty(value = "指定平台公司")
// private String appointCompanyId;
// @ApiModelProperty(value = "指定平台公司名称")
// private String appointCompanyName;
// @ApiModelProperty(value = "指定车辆ID")
// private String appointVehicleId;
// @ApiModelProperty(value = "指定车辆设备号")
// private String appointVehicleDevice;
/**是否开启路耗(0-否 1-是)*/
// @ApiModelProperty(value = "是否开启路耗(0-否 1-是)")
// @Excel(name = "是否开启路耗(0-否 1-是)", width = 15)
// private Integer isRoadLoss=0;
/**货物价值(元/吨)*/
// @ApiModelProperty(value = "货物价值(元/吨)")
// @Excel(name = "货物价值(元/吨)", width = 15)
// private BigDecimal goodsValue=BigDecimal.ZERO;
/**路耗模式( 0-按比例% 1-按数量(吨))*/
// @ApiModelProperty(value = "路耗模式( 0-按比例% 1-按数量(吨))")
// @Excel(name = "路耗模式( 0-按比例% 1-按数量(吨))", width = 15)
// private Integer roadLossMode;
// /**路耗结算方式( 1-取装货重量 2-取卸货重量 3-装卸货取大 4-装卸货取小)*/
// @ApiModelProperty(value = "路耗结算方式(0-无 1-取装货重量 2-取卸货重量 3-装卸货取大 4-装卸货取小)")
// @Excel(name = "路耗结算方式( 1-取装货重量 2-取卸货重量 3-装卸货取大 4-装卸货取小)", width = 15)
// private Integer roadLossSettlementMethod;
/**允许货物亏损*/
// @ApiModelProperty(value = "允许货物亏损(吨或%)")
// @Excel(name = "允许货物亏损(吨或%)", width = 15)
// private BigDecimal allowableLoss=BigDecimal.ZERO;
/**超出亏损扣除金额(元/吨)*/
// @ApiModelProperty(value = "超出亏损扣除金额(元/吨)")
// @Excel(name = "超出亏损扣除金额(元/吨)", width = 15)
// private BigDecimal lossDeductionAmount=BigDecimal.ZERO;
// @ApiModelProperty(value = "上游客户id")
// @Excel(name = "上游客户id", width = 15)
// private String upClientId;
// @ApiModelProperty(value = "运费抹零 0-不抹零 ,1-抹零小数位,2-抹零个位,3-抹零十位")
// private Integer isFreightNullification ;
@ApiModelProperty(value = "加油宝计算模式 0-按比例 1-按数值")
private Integer oilValue ;
// @ApiModelProperty(value = "是否允许接多单:0否 1是")
// private Integer isMultipleOrdersAllowed;
@ApiModelProperty(value = "发货备注")
private String shippingNote;
// @ApiModelProperty(value = "涨吨是否计算费用 0-否 1-是 ")
// private Integer isTonnageIncreaseCharge;
@ApiModelProperty(value = "装货地经度")
private String loadingLongitude;
@ApiModelProperty(value = "装货地纬度")
private String loadingLatitude;
@ApiModelProperty(value = "卸货地经度")
private String unloadLongitude;
@ApiModelProperty(value = "卸货地纬度")
private String unloadLatitude;
@ApiModelProperty(value = "预设竞标价")
@Excel(name = "预设竞标价", width = 15)
private BigDecimal highestPrice;
@ApiModelProperty(value = "预设竞标价")
private BigDecimal presetPrice;
@ApiModelProperty(value = "竞价单位(元/车,元/吨)")
private String biddingUnit;
@ApiModelProperty(value = "竞价最高可输入价格")
@Excel(name = "竞价最高可输入价格", width = 15)
private BigDecimal maximumBidPrice;
@ApiModelProperty(value = "评标类型(0-自动评标,1-手动评标)")
private Integer bidEvaluationType = 1;
@ApiModelProperty("应收结算类型:1-月结,2-现结")
private Integer receivableType;
@ApiModelProperty(value = "货物数量")
private String goodsQuantity;
@ApiModelProperty(value = "货物数量单位code")
private String goodsQuantityUnitId;
@ApiModelProperty(value = "货物数量单位")
private String goodsQuantityUnit;
// @ApiModelProperty("项目表ID")
// private Long projectManagementId;
// @ApiModelProperty(value = "服务费率")
// private BigDecimal serviceRate;
@ApiModelProperty("是否自动生成协议 0-否 1-是")
@Excel(name = "是否自动生成协议 0-否 1-是")
private Integer isAutoGenerateProtocol;
// @ApiModelProperty(value = "单车总费用")
// @Excel(name = "单车总费用", width = 15)
// private BigDecimal freightGross = BigDecimal.ZERO;
// @ApiModelProperty(value = "协议费用:回单付金额")
// @Excel(name = "协议费用:回单付金额", width = 15)
// private BigDecimal receiptPaymentAmount = BigDecimal.ZERO;
//
// @ApiModelProperty(value = "协议费用:预付现金金额")
// @Excel(name = "协议费用:预付现金金额", width = 15)
// private BigDecimal cashAdvance = BigDecimal.ZERO;
//
// @ApiModelProperty(value = "协议费用:到付运费金额")
// @Excel(name = "协议费用:到付运费金额", width = 15)
// private BigDecimal freightAmount = BigDecimal.ZERO;
//
// @ApiModelProperty(value = "协议费用:预付平台油卡金额")
// @Excel(name = "协议费用:预付平台油卡金额", width = 15)
// private BigDecimal oilCardOnline = BigDecimal.ZERO;
// @ApiModelProperty(value = "单车重量", required = true)
// private BigDecimal singleVehicleWeight;
//=================批量货派单相关=============================
// @ApiModelProperty(value = "需求车次")
// private Integer demandTrainNumber;
// @ApiModelProperty(value = "承运车次默认0")
// private Integer carriageNumber;
// @ApiModelProperty(value = "剩余需求车次")
// private Integer remainingDemandTrainNumber;
/**货物重量*/
// @ApiModelProperty(value = "货物重量")
// private BigDecimal goodsWeight;
// @ApiModelProperty(value = "货源剩余货物数量")
// private BigDecimal residueGoodsWeight;
// @ApiModelProperty(value = "承运货物数量")
// private BigDecimal transportGoodsWeight;
@ApiModelProperty(value = "货物信息表")
private List<TmsCargoInfoDTO> cargoInfoList;
@ApiModelProperty(value = "装货地址集合")
private List<TmsAddressMultiDTO> loadingAddressList;
@ApiModelProperty(value = "卸货地址集合")
private List<TmsAddressMultiDTO> unloadAddressList;
// @ApiModelProperty(value = "来源系统")
// private String orderSource;
//========================================新增字段==========================================
@ApiModelProperty(value = "付款方类型(0-委托方,1-收货方)")
@Excel(name = "付款方类型(0-委托方,1-收货方)", width = 15)
private Integer payerType;
@ApiModelProperty(value = "收货方编码")
private String recipientId;
@ApiModelProperty(value = "收货方")
private String recipientName;
@ApiModelProperty(value = "整机编号")
private String machineNumber;
@ApiModelProperty(value = "是否库存(0-是,1-否)")
@Excel(name = "是否库存(0-是,1-否)", width = 15)
private Integer stockFlag;
@ApiModelProperty(value = "信息费")
private BigDecimal infoFee;
@ApiModelProperty(value = "订单类型(1-普货运输,2-危化运输,3-罐车运输,4-济南专线,5-江西专线)")
private Integer orderShippingType;
@ApiModelProperty(value = "单号")
private String thirdPartyOrderNumber;
@ApiModelProperty(value = "车辆类型Id")
private String vehicleTypeId;
@ApiModelProperty(value = "车辆类型名称")
private String vehicleTypeName;
@ApiModelProperty(value = "承运人Id(订单为济南专线使用)")
private String carrier;
@ApiModelProperty(value = "承运人姓名(订单为济南专线使用)")
private String carrierName;
@ApiModelProperty("运费单价")
private BigDecimal freightUnitPrice;
@ApiModelProperty("数字物流平台用户id")
private Long szwlUserId;
@ApiModelProperty(value = "信息费收款方")
private String infoFeePayee;
@ApiModelProperty(value = "信息费收款方方式(0-委托方,1-收货方,2-第三方)")
private Integer infoFeePayeeType;
@ApiModelProperty("业务员ID")
private String salesmanId;
@ApiModelProperty("业务员ID")
private String salesmanName;
@ApiModelProperty("是否报关(0:否,1:是)")
private Integer isDeclare;
@ApiModelProperty("线路")
private String route;
@ApiModelProperty("柜类型")
private String containerType;
@ApiModelProperty("柜类型名称")
private String containerTypeName;
@ApiModelProperty("卡类型")
private String cardType;
@ApiModelProperty("卡类型名称")
private String cardTypeName;
@ApiModelProperty("外来柜号")
private String externalContainerNo;
@ApiModelProperty("中转地")
private String transitPlace;
@ApiModelProperty("托运人ID")
private String shipper;
@ApiModelProperty("托运人ID")
private String customsShipper;
@ApiModelProperty("托运人电话")
private String customsShipperTel;
@ApiModelProperty("卸货单位")
private String unloadingCompany;
@ApiModelProperty("合同编号")
private String contractNo;
@ApiModelProperty("运费")
private BigDecimal freightFee;
@ApiModelProperty("卸货费")
private BigDecimal unloadingFee;
@ApiModelProperty("报关费")
private BigDecimal customsFee;
@ApiModelProperty("差货费")
private BigDecimal shortageFee;
@ApiModelProperty("杂费")
private BigDecimal miscellaneousFee;
@ApiModelProperty("其他费用")
private BigDecimal otherFee;
@ApiModelProperty("滞车费")
private BigDecimal detentionFee;
@ApiModelProperty("税率")
private BigDecimal taxRate;
@ApiModelProperty("结算币种")
private String settlementCurrency;
@ApiModelProperty("体积")
private BigDecimal volume;
@ApiModelProperty("内容详情")
private String detailContent;
@ApiModelProperty("报关线路")
private String customsRoute;
@ApiModelProperty("报关关口")
private String customsPort;
@ApiModelProperty("报关联系人")
private String customsContact;
@ApiModelProperty("报关联系人电话")
private String customsContactPhone;
@ApiModelProperty("报关备注")
private String customsRemark;
@ApiModelProperty(value = "组织ID")
private String orgId;
@ApiModelProperty(value = "所属组织")
@Excel(name = "所属组织", width = 15)
private String orgName;
@ApiModelProperty(value = "组织ID")
private Long organizationId;
@ApiModelProperty(value = "组织名称")
private String organizationName;
@ApiModelProperty(value = "上级组织ID")
private Long topOrganizationId;
@ApiModelProperty("客户编码nc")
private String customerCodeNc;
@ApiModelProperty("制单人编码nc")
private String makerCodeNc;
@ApiModelProperty("业务员编码nc")
private String salesmanCodeNc;
@ApiModelProperty(value = "单据日期")
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
private java.util.Date documentDate;
@ApiModelProperty("执行单id")
private String executeOrderId;
@ApiModelProperty("执行单号")
private String executeOrderNumber;
}
@@ -475,6 +475,7 @@ public class TmsOrder implements Serializable {
@ApiModelProperty(value = "已收运费")
private BigDecimal collectedFreight;
@ApiModelProperty(value = "未收运费")
private BigDecimal uncollectedFreight;
@ApiModelProperty(value = "少收运费")
@@ -522,4 +523,44 @@ public class TmsOrder implements Serializable {
@ApiModelProperty(value = "付款方名称")
private String payer;
@ApiModelProperty("制单人编码nc")
private String makerCodeNc;
@ApiModelProperty("业务员编码nc")
private String salesmanCodeNc;
@ApiModelProperty("税率")
private BigDecimal taxRate;
@ApiModelProperty("结算币种")
private String settlementCurrency;
@ApiModelProperty("合同编号")
private String contractNo;
@ApiModelProperty("客户编码nc")
private String customerCodeNc;
@ApiModelProperty(value = "组织ID")
private String orgId;
@ApiModelProperty(value = "所属组织")
private String orgName;
@ApiModelProperty(value = "组织ID")
private Long organizationId;
@ApiModelProperty(value = "组织名称")
private String organizationName;
@ApiModelProperty(value = "上级组织ID")
private Long topOrganizationId;
@ApiModelProperty(value = "单据日期")
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
private java.util.Date documentDate;
}
@@ -99,6 +99,8 @@ public class Verification extends BaseVOEntity implements Serializable,Cloneable
private Long topOrganizationId;
@ApiModelProperty("组织表ID")
private Long organizationId;
@ApiModelProperty("组织名称")
private String organizationName;
// @ApiModelProperty("是否月结:1-是,2-否")
// private Integer receivableType;
@ApiModelProperty("部门id")
@@ -56,4 +56,7 @@ public class AddressBookPo extends BaseVOEntity implements Serializable
private String synthesize;
@ApiModelProperty(name = "单位名称")
private String unitName;
@ApiModelProperty(name = "组织ID(用于数据权限过滤,内部使用)", hidden = true)
private Long organizationId;
}
@@ -1,5 +1,6 @@
package com.mhd.common.core.domain.po;
import cn.hutool.core.util.ObjectUtil;
import com.mhd.common.core.web.domain.BaseVOEntity;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@@ -24,6 +25,10 @@ public class RolePO extends BaseVOEntity implements Serializable {
private String roleTypeName = "";
@ApiModelProperty(name = "组织表ID")
private Long organizationId = 0L;
@ApiModelProperty(name = "组织名称")
private String organizationName = "";
@ApiModelProperty(name = "一级组织表ID")
private Long topOrganizationId = 0L;
@ApiModelProperty(name = "职务/角色权限字符,控制器中定义的权限字符,如:@PreAuthorize(`@ss.hasRole('admin')`)")
private String roleCode = "";
@ApiModelProperty(name = "职务/角色名称")
@@ -42,6 +47,9 @@ public class RolePO extends BaseVOEntity implements Serializable {
@Override
public boolean equals(Object o) {
if (ObjectUtil.isNull(o)) {
return false;
}
RolePO rolePO = (RolePO) o;
return roleCode.equals(rolePO.getRoleCode());
}
@@ -28,6 +28,8 @@ public class UserDriverListPo {
private String driverEnterpriseName="";
@ApiModelProperty(name = "登录账号(2-20位)")
private String userAccount = "";
@ApiModelProperty(name = "组织表ID")
private Long organizationId;
@ApiModelProperty(name = "组织名称")
private String organizationName = "";
@ApiModelProperty(name = "身份证号")
@@ -301,4 +303,13 @@ public class UserDriverListPo {
@ApiModelProperty(value = "是否允许竞价(0-不允许竞价,1-允许参与竞价,2-允许查看竞价)")
private Integer isDriverBidding;
@ApiModelProperty(value = "用户身份")
private Integer userIdentity;
@ApiModelProperty(name = "车辆主体")
private String vehicleBody;
@ApiModelProperty(name = "")
private String wlhydriverId;
}
@@ -185,6 +185,9 @@ public class UserDriverPo {
@ApiModelProperty(name = "用户实名认证状态:0-无状态,1-已注册未认证,2-已认证待审核,3-审核通过,4-已驳回")
private Integer userAuthStatus;
@ApiModelProperty(name = "车辆主体")
private String vehicleBody;
//===================车队司机参数===============
@ApiModelProperty("车队队长userId")
@@ -220,4 +220,34 @@ public class UserPo {
@ApiModelProperty(name = "制单员nc编码")
private String documentPreparerNcCode;
@ApiModelProperty("法人代表")
private String legalRepresentative;
@ApiModelProperty("统一编码")
private String unifiedCode;
@ApiModelProperty("注册电话")
private String registeredPhone;
@ApiModelProperty("注册地址")
private String registeredAddress;
@ApiModelProperty("传真")
private String fax;
@ApiModelProperty("付款银行")
private String paymentBank;
@ApiModelProperty("付款账户")
private String paymentAccount;
@ApiModelProperty("发票抬头")
private String invoiceTitle;
@ApiModelProperty("税号")
private String taxNumber;
@ApiModelProperty("备注")
private String remark;
}
@@ -99,6 +99,8 @@ public class VerificationPo extends BaseVOEntity implements Serializable
private Long topOrganizationId;
@ApiModelProperty("组织表ID")
private Long organizationId;
@ApiModelProperty("组织名称")
private String organizationName;
// @ApiModelProperty("是否月结:1-是,2-否")
// private Integer receivableType;
@ApiModelProperty("部门id")
@@ -4,6 +4,7 @@ import com.aliyun.oss.ServiceException;
import io.minio.MinioClient;
import io.minio.PutObjectArgs;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.util.UriUtils;
@@ -15,9 +16,11 @@ import java.util.Date;
import java.util.List;
import java.util.UUID;
@Service
public class MinIoUploadService {
@Autowired
private MinioClient minioClient;
private static String bucket="ngwl";
private static String host="http://10.102.192.5:6000";
private static String accessKey="minioadmin";
@@ -64,7 +67,7 @@ public class MinIoUploadService {
.stream(inputStream,inputStream.available(),-1).build();
//文件名称相同会覆盖
minioClient.putObject(objectArgs);
String url =host+ "/"+bucket + "/"+fileName;
String url =host+"/browser/"+bucket + "/"+fileName;
//
return url;
@@ -1,240 +0,0 @@
package minio;
import com.aliyun.oss.ServiceException;
import io.minio.MinioClient;
import io.minio.errors.InvalidEndpointException;
import io.minio.errors.InvalidPortException;
import lombok.extern.slf4j.Slf4j;
import net.coobird.thumbnailator.Thumbnails;
import org.jeecg.modules.oss.dto.WaterMarkDTO;
import org.jeecg.modules.system.entity.SysDepartInterfaceInfo;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.util.UriUtils;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.nio.charset.StandardCharsets;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
/**
* @Description: minio oss 上传工具类
*/
@Slf4j
public class MinioBootUtil {
private static String bucket;
private static String host;
private static String accessKey;
private static String secretKey;
/**
* minio 工具客户端
*/
private static MinioClient minioClient = null;
private static String FILE_URL;
/**
* @Description 强制初始化minio
* @Author Alex
* @Date 2023/10/25 11:12
*/
public static MinioClient forceInitMinio(List<SysDepartInterfaceInfo> sysDepartInterfaceInfoList) throws InvalidPortException, InvalidEndpointException {
for (SysDepartInterfaceInfo sysDepartInterfaceInfo : sysDepartInterfaceInfoList) {
String interfaceTypeKey = sysDepartInterfaceInfo.getInterfaceTypeKey();//接口参数
String interfaceTypeValue = sysDepartInterfaceInfo.getInterfaceTypeValue();//接口参数值
switch (interfaceTypeKey) {
case "bucket":
bucket = interfaceTypeValue;
break;
case "host":
host = interfaceTypeValue;
break;
case "accessKey":
accessKey = interfaceTypeValue;
break;
case "secretKey":
secretKey = interfaceTypeValue;
break;
default:
break;
}
}
minioClient = new MinioClient(host, accessKey, secretKey);
return minioClient;
}
private static MinioClient initMinio() throws InvalidPortException, InvalidEndpointException {
if (minioClient == null) {
minioClient = new MinioClient(host, accessKey, secretKey);
}
return minioClient;
}
/**
* 上传文件
* 文件上传成功,返回文件完整访问路径
* 文件上传失败,返回 null
*
* @param multipartFile 待上传文件
* @param fileDir 文件保存目录
* @return oss 中的相对文件路径
*/
public static String upload(MultipartFile multipartFile, String fileDir, List<SysDepartInterfaceInfo> sysDepartInterfaceInfoList) {
for (SysDepartInterfaceInfo sysDepartInterfaceInfo : sysDepartInterfaceInfoList) {
String interfaceTypeKey = sysDepartInterfaceInfo.getInterfaceTypeKey();//接口参数
String interfaceTypeValue = sysDepartInterfaceInfo.getInterfaceTypeValue();//接口参数值
switch (interfaceTypeKey) {
case "bucket":
bucket = interfaceTypeValue;
break;
case "host":
host = interfaceTypeValue;
break;
case "accessKey":
accessKey = interfaceTypeValue;
break;
case "secretKey":
secretKey = interfaceTypeValue;
break;
default:
break;
}
}
try (InputStream inputStream = multipartFile.getInputStream()) {
//初始化minio
initMinio();
// bucket 不存在创建
if (!minioClient.bucketExists(bucket)) {
minioClient.makeBucket(bucket);
}
// 上传文件的名称
String fileName = multipartFile.getOriginalFilename();
long timestamp = Calendar.getInstance().getTimeInMillis();
// PutObjectOptions上传配置(文件大小内存中文件分片大小)
// PutObjectOptions putObjectOptions = new PutObjectOptions(multipartFile.getSize(), PutObjectOptions.MIN_MULTIPART_SIZE);
// // 文件的ContentType
// putObjectOptions.setContentType(multipartFile.getContentType());
SimpleDateFormat sdYear = new SimpleDateFormat("yyyy");
SimpleDateFormat sdMonth = new SimpleDateFormat("MM");
SimpleDateFormat sdDay = new SimpleDateFormat("dd");
String year = sdYear.format(new Date());
String month = sdMonth.format(new Date());
String day = sdDay.format(new Date());
String filrDir = "wlhy/" + year + "/" + month + "/" + day + "/";
// minioClient.putObject(bucket, filrDir+timestamp+fileName, inputStream, putObjectOptions);
minioClient.putObject(bucket, filrDir+timestamp+fileName, inputStream, multipartFile.getContentType());
// 返回访问路径
String fileurl = host+ "/"+bucket + "/"+filrDir+timestamp+ UriUtils.encode(fileName, StandardCharsets.UTF_8);
System.out.println("fileurl===="+fileurl);
FILE_URL = fileurl;
return fileurl;
} catch (ServiceException e){
log.error(e.getErrorMessage());
} catch (Exception e){
log.error(e.getMessage());
}
return FILE_URL;
}
/**
* 上传文件 带时间水印
* 文件上传成功,返回文件完整访问路径
* 文件上传失败,返回 null
*
* @param multipartFile 待上传文件
* @param fileDir 文件保存目录
* @return oss 中的相对文件路径
*/
public static String uploadWaterMark(MultipartFile multipartFile, WaterMarkDTO waterMarkDTO, String fileDir, List<SysDepartInterfaceInfo> sysDepartInterfaceInfoList) {
for (SysDepartInterfaceInfo sysDepartInterfaceInfo : sysDepartInterfaceInfoList) {
String interfaceTypeKey = sysDepartInterfaceInfo.getInterfaceTypeKey();//接口参数
String interfaceTypeValue = sysDepartInterfaceInfo.getInterfaceTypeValue();//接口参数值
switch (interfaceTypeKey) {
case "bucket":
bucket = interfaceTypeValue;
break;
case "host":
host = interfaceTypeValue;
break;
case "accessKey":
accessKey = interfaceTypeValue;
break;
case "secretKey":
secretKey = interfaceTypeValue;
break;
default:
break;
}
}
// 压缩代码
InputStream inputStream = null;
try {
//初始化minio
initMinio();
// bucket 不存在创建
if (!minioClient.bucketExists(bucket)) {
minioClient.makeBucket(bucket);
}
String OriginalFilename = multipartFile.getOriginalFilename();
inputStream = multipartFile.getInputStream();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//水印内容
String waterMarkContent = sdf.format(new Date());
//以下两种方法加水印
//方法1
if (OriginalFilename.indexOf(".pdf") < 0) {
ByteArrayOutputStream byteArrayOutputStreamut = new ByteArrayOutputStream();
Thumbnails.of(inputStream).width(1024).keepAspectRatio(true).outputQuality(0.9).toOutputStream(byteArrayOutputStreamut);
inputStream = new ByteArrayInputStream(byteArrayOutputStreamut.toByteArray());
//添加水印
inputStream = OssBootUtil.buildWatermarkOfText(inputStream, waterMarkDTO, OssBootUtil.WaterMarkLocation.SOUTH_WEST, null, 0.5f);
}
//方法2
/*if (ImageUtil.isImage(multipartFile.getOriginalFilename())) {
inputStream = ImageUtil.getInputStream(
ImageUtil.setWatermark(
ImageUtil.compress(
ImageIO.read(inputStream)),waterMarkContent),
ImageUtil.getFileExtention(multipartFile.getOriginalFilename()));
}*/
StringBuilder fileUrl = new StringBuilder();
String suffix = multipartFile.getOriginalFilename().substring(multipartFile.getOriginalFilename().lastIndexOf('.'));
// 上传文件的名称
String fileName = multipartFile.getOriginalFilename();
long timestamp = Calendar.getInstance().getTimeInMillis();
// PutObjectOptions上传配置(文件大小内存中文件分片大小)
// PutObjectOptions putObjectOptions = new PutObjectOptions(multipartFile.getSize(), PutObjectOptions.MIN_MULTIPART_SIZE);
// // 文件的ContentType
// putObjectOptions.setContentType(multipartFile.getContentType());
SimpleDateFormat sdYear = new SimpleDateFormat("yyyy");
SimpleDateFormat sdMonth = new SimpleDateFormat("MM");
SimpleDateFormat sdDay = new SimpleDateFormat("dd");
String year = sdYear.format(new Date());
String month = sdMonth.format(new Date());
String day = sdDay.format(new Date());
String filrDir = "wlhy/" + year + "/" + month + "/" + day + "/";
// minioClient.putObject(bucket, filrDir+timestamp+fileName, inputStream, putObjectOptions);
minioClient.putObject(bucket, filrDir+timestamp+fileName, inputStream, multipartFile.getContentType());
// 返回访问路径
String fileurl = host+ "/"+bucket + "/"+filrDir+timestamp+ UriUtils.encode(fileName, StandardCharsets.UTF_8);
System.out.println("fileurl===="+fileurl);
FILE_URL = fileurl;
return fileurl;
} catch (IOException e) {
log.error(e.getMessage());
} catch (Exception e) {
log.error(e.getMessage());
}
return FILE_URL;
}
}
@@ -129,6 +129,7 @@ public class TokenService
if (StringUtils.isNotEmpty(token))
{
String userkey = JwtUtils.getUserKey(token);
redisService.deleteObject(userkey);
redisService.deleteObject(getTokenKey(userkey));
}
}
+7 -11
View File
@@ -13,21 +13,17 @@ spring:
cloud:
nacos:
discovery:
# server-addr: 127.0.0.1:8848
# 线上测试环境配置 容器名+端口号
# server-addr: 10.102.192.5:6848
server-addr: 10.33.0.129:6010
#线上正式环境
# server-addr: 10.102.192.105:6848
server-addr: 10.102.192.5:6848
username: nacos
password: manhuoda@2023
config:
# server-addr: 127.0.0.1:8848
# 线上测试环境配置 容器名+端口号
# server-addr: 10.102.192.5:6848
server-addr: 10.33.0.129:6010
#线上正式环境
# server-addr: 10.102.192.105:6848
server-addr: 10.102.192.5:6848
username: nacos
password: manhuoda@2023
group: DEFAULT_GROUP # 默认分组就是DEFAULT_GROUP,如果使用默认分组可以不配置
file-extension: yml #默认properties
# 共享配置
shared-configs:
- application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}
- application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}
@@ -14,10 +14,14 @@ spring:
nacos:
discovery:
server-addr: 127.0.0.1:8848
username: nacos
password: manhuoda@2023
# 线上测试环境配置 容器名+端口号
#server-addr: mhd-nacos:8848
config:
server-addr: 127.0.0.1:8848
username: nacos
password: manhuoda@2023
# 线上测试环境配置 容器名+端口号
#server-addr: mhd-nacos:8848
group: DEFAULT_GROUP # 默认分组就是DEFAULT_GROUP,如果使用默认分组可以不配置
@@ -6,6 +6,7 @@ import com.mhd.common.security.annotation.EnableCustomConfig;
import com.mhd.common.security.annotation.EnableRyFeignClients;
import com.mhd.common.swagger.annotation.EnableCustomSwagger2;
import org.springframework.scheduling.annotation.EnableAsync;
import org.springframework.scheduling.annotation.EnableScheduling;
/**
* 系统模块
@@ -17,6 +18,7 @@ import org.springframework.scheduling.annotation.EnableAsync;
@EnableRyFeignClients
@SpringBootApplication
@EnableAsync
@EnableScheduling
public class MhdSystemApplication
{
public static void main(String[] args)
@@ -0,0 +1,318 @@
package com.mhd.basic.application.service.Lease;
import cn.hutool.core.util.ObjectUtil;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson2.JSON;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.mhd.basic.application.service.storageSection.StorageSectionApplicationService;
import com.mhd.basic.domain.lease.entity.Lease;
import com.mhd.basic.domain.lease.repository.facade.ILeaseService;
import com.mhd.basic.domain.lease.repository.po.LeasePO;
import com.mhd.basic.domain.lease.repository.todo.LeaseDO;
import com.mhd.basic.domain.lease.service.LeaseDomainService;
import com.mhd.basic.domain.shipperLeaseDetails.entity.ShipperLeaseDetails;
import com.mhd.basic.domain.shipperLeaseDetails.entity.WarehouseOccupancyRate;
import com.mhd.basic.domain.shipperLeaseDetails.repository.facade.IShipperLeaseDetailsService;
import com.mhd.basic.domain.shipperLeaseDetails.repository.po.ShipperLeaseDetailsPO;
import com.mhd.basic.domain.shipperLeaseDetails.repository.todo.ShipperLeaseDetailsDO;
import com.mhd.basic.domain.storageSection.repository.po.StorageSectionPO;
import com.mhd.basic.domain.storageSection.repository.todo.StorageSectionDO;
import com.mhd.basic.interfaces.dto.lease.LeaseDTO;
import com.mhd.basic.interfaces.dto.shipperLeaseDetailsApi.ShipperLeaseDetailsDTO;
import com.mhd.common.core.exception.ServiceException;
import com.mhd.common.core.web.domain.AjaxResult;
import com.mhd.common.security.utils.SecurityUtils;
import com.mhd.system.api.SystemServiceFeign;
import com.mhd.system.api.WmsServiceFeign;
import com.mhd.system.api.domain.MaterialInventoryDTO;
import com.mhd.system.api.domain.WarehouseFeignPO;
import com.mhd.system.api.model.LoginUser;
import com.mhd.system.service.ISysDictTypeService;
import io.swagger.annotations.ApiModelProperty;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Service;
import java.math.BigDecimal;
import java.util.*;
import java.util.stream.Collectors;
/**
* 租赁管理ApplicationService
*
* @author gen
* @date 2024-05-07
*/
@Service
@Slf4j
public class LeaseApplicationService {
@Autowired
private LeaseDomainService leaseDomainService;
@Autowired
private ILeaseService leaseService;
@Autowired
private ISysDictTypeService dictTypeService;
@Autowired
private WmsServiceFeign wmsServiceFeign;
@Autowired
private StorageSectionApplicationService storageSectionApplicationService;
@Autowired
private IShipperLeaseDetailsService shipperLeaseDetailsService;
/**
* 分页查询租赁管理列表
*/
public List<LeasePO> queryList(LeaseDO leaseDO) {
LoginUser loginUser = SecurityUtils.getLoginUser();
if (loginUser != null && loginUser.getUserPo() != null){
Long loginUserOrganizationId = loginUser.getUserPo().getOrganizationId();
Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId();
// 数据权限根据organizationId来设置查询权限
// organizationId等于2827时查询全部其他仅查询各自组织的信息
if (loginUserOrganizationId != null && loginUserOrganizationId.equals(2827L)) {
// 南光组织organizationId=2827可以查询所有组织的数据
// 如果前端传递了 organizationId使用前端传递的值进行过滤
// 如果前端没有传递 organizationId清空组织过滤条件查询所有组织的数据
if (leaseDO.getOrganizationId() == null) {
leaseDO.setOrganizationId(null);
leaseDO.setTopOrganizationId(null);
}
} else {
// 其他组织设置organizationId只查询当前组织的数据
if (topOrganizationId != null && topOrganizationId != 1){
leaseDO.setTopOrganizationId(topOrganizationId);
}
// 如果前端传递了organizationId验证是否与当前登录用户的组织ID一致
if (leaseDO.getOrganizationId() != null && !leaseDO.getOrganizationId().equals(loginUserOrganizationId)) {
// 前端传递了其他组织的organizationId强制使用当前登录用户的组织ID防止越权查询
leaseDO.setOrganizationId(loginUserOrganizationId);
}
}
}
return leaseDomainService.queryList(leaseDO);
}
/**
* 新增租赁管理
*/
public Boolean insert(LeaseDO leaseDO) {
// 设置当前登录用户的组织信息
LoginUser loginUser = SecurityUtils.getLoginUser();
if (loginUser != null && loginUser.getUserPo() != null) {
leaseDO.setOrganizationId(loginUser.getUserPo().getOrganizationId());
leaseDO.setOrganizationName(loginUser.getUserPo().getOrganizationName());
leaseDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId());
}
List<Lease> timeOverlapSimple = isTimeOverlapSimple(leaseDO.getCargoOwnerName(), leaseDO.getStartDate(), leaseDO.getEndDate(), null);
if (ObjectUtil.isNotEmpty(timeOverlapSimple)) {
throw new ServiceException("同一货主租赁信息时间不能重叠");
}
setWarehouseInfo(leaseDO);
return leaseDomainService.insert(leaseDO);
}
@Autowired
private SystemServiceFeign systemServiceFeign;
private void setWarehouseInfo(LeaseDO leaseDO) {
AjaxResult ajaxResult = systemServiceFeign.getWarehouseInfoByWarehouseId(leaseDO.getWarehouseId());
if(!"200".equals(String.valueOf(ajaxResult.get("code")))){
throw new ServiceException("获取仓库信息失败");
}
WarehouseFeignPO warehouseFeignPO = com.alibaba.fastjson.JSON.parseObject(com.alibaba.fastjson2.JSONObject.toJSONString(ajaxResult.get("data")), WarehouseFeignPO.class);
leaseDO.setWarehouseName(warehouseFeignPO.getWarehouseName());
}
private List<Lease> isTimeOverlapSimple(String cargoOwnerName, Date startDate, Date endDate, Long excludeId) {
LambdaQueryWrapper<Lease> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(Lease::getCargoOwnerName, cargoOwnerName)
.eq(Lease::getDelFlag, 1) // 只查询正常状态
.le(Lease::getStartDate, endDate)
.ge(Lease::getEndDate, startDate);
if (excludeId != null) {
wrapper.ne(Lease::getId, excludeId);
}
return leaseService.list(wrapper);
}
/**
* 修改租赁管理
*/
public Boolean update(LeaseDO leaseDO) {
List<Lease> timeOverlapSimple = isTimeOverlapSimple(leaseDO.getCargoOwnerName(), leaseDO.getStartDate(), leaseDO.getEndDate(), leaseDO.getId());
if (ObjectUtil.isNotEmpty(timeOverlapSimple)) {
throw new ServiceException("同一货主租赁信息时间不能重叠");
}
return leaseDomainService.update(leaseDO);
}
/**
* 批量删除租赁管理
*/
public boolean delete(Long[] leaseIds) {
return leaseDomainService.delete(leaseIds);
}
/**
* 获取租赁管理详细信息
*/
public LeasePO getInfo(Long leaseId)
{
return leaseDomainService.getInfo(leaseId);
}
/**
* @description 批量作废租赁
* @author ZhouGY
* @date 2024/5/13 9:46
* @param leaseIds
* @return Boolean
*/
public Boolean nullifyByIds(List<Long> leaseIds){
return leaseDomainService.nullifyByIds(leaseIds);
}
/**
* 货主租赁明细
*/
@Scheduled(cron = "0 0 1 * * ?")
public void shipperLeaseDetails() {
LeaseDO leaseDO = new LeaseDO();
leaseDO.setTime(new Date());
//查询租赁
List<LeasePO> leasePOS = queryList(leaseDO);
// List<LeasePO> leasePOS = leaseDomainService.queryList(leaseDO);
List<LeasePO> entireUnit = leasePOS.stream()
.filter(lease -> lease.getLeaseType().equals("整租"))
.collect(Collectors.toList());
List<LeasePO> casualRental = leasePOS.stream()
.filter(lease -> lease.getLeaseType().equals("散租"))
.collect(Collectors.toList());
List<ShipperLeaseDetails> shipperLeaseDetailsList = new ArrayList<>(); //建表后保存
for (LeasePO en : entireUnit) {//整租
ShipperLeaseDetails shipperLeaseDetails = new ShipperLeaseDetails();
BeanUtils.copyProperties(en, shipperLeaseDetails);
shipperLeaseDetails.setBusinessDate(new Date());
shipperLeaseDetailsList.add(shipperLeaseDetails);
}
//当前货主当前仓库库存查询页面所有面积加起来就是散租面积
for (LeasePO ca : casualRental) {//散租
ShipperLeaseDetails shipperLeaseDetails = new ShipperLeaseDetails();
BeanUtils.copyProperties(ca, shipperLeaseDetails);
shipperLeaseDetails.setBusinessDate(new Date());
//物料库存
MaterialInventoryDTO materialInventoryDTO = new MaterialInventoryDTO();
materialInventoryDTO.setShipperId(ca.getShipperId());
materialInventoryDTO.setWarehouseId(ca.getWarehouseId());
AjaxResult ajaxResult = wmsServiceFeign.materialInventoryApiListAll(materialInventoryDTO);
BigDecimal area = BigDecimal.ZERO;
if(String.valueOf(ajaxResult.get("code")).equals("200")) {
JSONArray data = JSONObject.parseArray(JSON.toJSONString(ajaxResult.get("data")));
for (Object datum : data) {
JSONObject json = (JSONObject) datum;
BigDecimal area1 = json.getBigDecimal("area");
if (area1 == null) {
area1 = BigDecimal.ZERO;
}
area = area.add(area1);
}
}
shipperLeaseDetails.setLeaseArea(area);
shipperLeaseDetailsList.add(shipperLeaseDetails);
}
// 保存货主租赁明细(新建表)
if (shipperLeaseDetailsList.size() > 0) {
shipperLeaseDetailsService.saveBatch(shipperLeaseDetailsList);
}
}
/**
* 计算仓库出租率
* warehouseId 仓库id
* businessDateStart 业务开始时间
* businessDateEnd 业务结束时间
*/
public List<WarehouseOccupancyRate> warehouseOccupancyRate(ShipperLeaseDetailsDO shipperLeaseDetailsDO) {
//仓库id 开始结束时间作为查询条件 查数据库 差出来当前仓库所有的
List<ShipperLeaseDetailsPO> shipperLeaseDetailsList = shipperLeaseDetailsService.queryList(shipperLeaseDetailsDO);
ShipperLeaseDetailsPO shipperLeaseDetailsPO = shipperLeaseDetailsList.get(0);
//按业务日期分组并按日期排序
TreeMap<Date, List<ShipperLeaseDetailsPO>> groupedByDate = shipperLeaseDetailsList.stream().collect(
Collectors.groupingBy(
ShipperLeaseDetailsPO::getBusinessDate,
TreeMap::new,
Collectors.toList()
)
);
//获取总面积
BigDecimal totalArea = BigDecimal.ZERO;
StorageSectionDO storageSectionDO = new StorageSectionDO();
storageSectionDO.setWarehouseId(shipperLeaseDetailsDO.getWarehouseId());
storageSectionDO.setOpeningUp(1);
List<StorageSectionPO> storageSectionPOS = storageSectionApplicationService.queryList(storageSectionDO);
for (StorageSectionPO storageSectionPO : storageSectionPOS) {
totalArea = totalArea.add(storageSectionPO.getStorageRegion());
}
List<WarehouseOccupancyRate> warehouseOccupancyRatesList = new ArrayList<>();
//组装仓库返回数据
BigDecimal finalTotalArea = totalArea;
groupedByDate.forEach((date, shipperLeaseDetails) -> {
WarehouseOccupancyRate warehouseOccupancyRate = new WarehouseOccupancyRate();
warehouseOccupancyRate.setBusinessDate(date);
BigDecimal entireLeaseArea = BigDecimal.ZERO;
BigDecimal fractionalLeaseArea = BigDecimal.ZERO;
//计算整租和散租
for (ShipperLeaseDetailsPO shipperLeaseDetail : shipperLeaseDetails) {
if (shipperLeaseDetail.getLeaseType().equals("整租")){
entireLeaseArea = entireLeaseArea.add(shipperLeaseDetail.getLeaseArea());
}else {
fractionalLeaseArea = fractionalLeaseArea.add(shipperLeaseDetail.getLeaseArea());
}
warehouseOccupancyRate.setWarehouseName(shipperLeaseDetail.getWarehouseName());
warehouseOccupancyRate.setBusinessDate(date);
warehouseOccupancyRate.setWarehouseId(shipperLeaseDetail.getWarehouseId());
}
warehouseOccupancyRate.setEntireLeaseArea(entireLeaseArea);
warehouseOccupancyRate.setFractionalLeaseArea(fractionalLeaseArea);
warehouseOccupancyRate.setTotalArea(finalTotalArea);
BigDecimal dailyRentalRate = entireLeaseArea.add(fractionalLeaseArea).divide(finalTotalArea, 2, BigDecimal.ROUND_HALF_UP);
warehouseOccupancyRate.setDailyRentalRate(dailyRentalRate);
warehouseOccupancyRatesList.add(warehouseOccupancyRate);
});
return warehouseOccupancyRatesList;
}
// /**
// * @description 设置数据字典键值
// * @author ZhouGY
// * @date 2024/4/7 14:33
// * @param containerDO
// */
// private void setDataDict(LeaseDO leaseDO){
// //翻译租赁类型
// List<SysDictData> storageTypeDictDataList = dictTypeService.selectDictDataByType(DictCode.CONTAINER_TYPE.getCode());
// if (null == storageTypeDictDataList) {
// throw new ServiceException("租赁类型数据字典不存在 请联系管理员");
// }
// SysDictData storageTypeDictData = storageTypeDictDataList.stream().filter(info -> ObjectUtil.equal(info.getDictValue(), containerDO.getContainerType())).findAny().orElse(null);
// if (null == storageTypeDictData) {
// throw new ServiceException("租赁类型【" + leaseDO.getContainerType() + "】数据字典不存在 请联系管理员");
// }
// leaseDO.setContainerTypeName(storageTypeDictData.getDictLabel());
// }
}
@@ -69,9 +69,37 @@ public class AddressBookApplicationService
// 获取登录人id
Long userId = SecurityUtils.getLoginUser().getUserid();
addressBookPo.setUserId(userId);
// 添加组织数据权限过滤
applyOrganizationDataPermissionForAddressBook(addressBookPo);
return addressBookDomainService.selectAddressBookList(addressBookPo);
}
/**
* 应用组织数据权限过滤地址簿
* 通过用户表关联来过滤组织数据
*/
private void applyOrganizationDataPermissionForAddressBook(AddressBookPo addressBookPo) {
try {
LoginUser loginUser = SecurityUtils.getLoginUser();
if (loginUser != null && loginUser.getUserPo() != null) {
Long loginUserOrganizationId = loginUser.getUserPo().getOrganizationId();
// 如果当前登录用户的organizationId为2827南光组织可以查询全部组织数据
// 其他组织只能查询自己组织的数据
if (loginUserOrganizationId != null && !loginUserOrganizationId.equals(2827L)) {
// 其他组织需要通过用户表关联来过滤只查询同一组织下用户创建的地址簿
// 由于AddressBook表只有userId字段需要在XML中通过用户表关联来过滤
addressBookPo.setOrganizationId(loginUserOrganizationId);
}
// 如果是2827组织不设置organizationId可以查询全部
}
} catch (Exception e) {
// 如果获取登录用户信息失败不添加过滤条件避免影响正常查询
}
}
/**
* 新增地址簿
*
@@ -156,12 +184,39 @@ public class AddressBookApplicationService
*/
public List<CommonRoutePo> selectCommonRouteList(CommonRouteDo commonRouteDo){
// 获取登录人id
// Long userId = SecurityUtils.getUserId()==0 ? 4L:SecurityUtils.getLoginUser().getUserid();
Long userId = SecurityUtils.getLoginUser().getUserid();
commonRouteDo.setCreateBy(userId);
// 添加组织数据权限过滤
applyOrganizationDataPermissionForCommonRoute(commonRouteDo);
return commonRouteDomainService.selectCommonRouteList(commonRouteDo);
}
/**
* 应用组织数据权限过滤常用路线
* 通过用户表关联来过滤组织数据
*/
private void applyOrganizationDataPermissionForCommonRoute(CommonRouteDo commonRouteDo) {
try {
LoginUser loginUser = SecurityUtils.getLoginUser();
if (loginUser != null && loginUser.getUserPo() != null) {
Long loginUserOrganizationId = loginUser.getUserPo().getOrganizationId();
// 如果当前登录用户的organizationId为2827南光组织可以查询全部组织数据
// 其他组织只能查询自己组织的数据
if (loginUserOrganizationId != null && !loginUserOrganizationId.equals(2827L)) {
// 其他组织需要通过用户表关联来过滤只查询同一组织下用户创建的常用路线
// 由于CommonRoute表只有userId字段需要在XML中通过用户表关联来过滤
commonRouteDo.setOrganizationId(loginUserOrganizationId);
}
// 如果是2827组织不设置organizationId可以查询全部
}
} catch (Exception e) {
// 如果获取登录用户信息失败不添加过滤条件避免影响正常查询
}
}
/**
* 新增常用路线
*
@@ -1,15 +1,22 @@
package com.mhd.basic.application.service.batch;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.mhd.basic.domain.batch.repository.po.BatchPO;
import com.mhd.basic.domain.batch.repository.todo.BatchDO;
import com.mhd.basic.domain.batch.service.BatchDomainService;
import com.mhd.basic.domain.batchDetail.entity.BatchDetail;
import com.mhd.basic.domain.batchDetail.repository.facade.IBatchDetailService;
import com.mhd.basic.domain.batchDetail.repository.po.BatchDetailPO;
import com.mhd.basic.domain.pack.repository.todo.PackDO;
import com.mhd.common.core.domain.po.UserPo;
import com.mhd.common.security.utils.SecurityUtils;
import com.mhd.system.api.model.LoginUser;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;
/**
* 批次管理ApplicationService
@@ -22,6 +29,8 @@ import java.util.List;
public class BatchApplicationService {
@Autowired
private BatchDomainService batchDomainService;
@Autowired
private IBatchDetailService batchDetailService;
/**
@@ -36,7 +45,21 @@ public class BatchApplicationService {
batchDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId());
}
}
return batchDomainService.queryList(batchDO);
List<BatchPO> batchPOS = batchDomainService.queryList(batchDO);
for (BatchPO batchPO : batchPOS) {
List<BatchDetail> batchDetailList = batchDetailService.list(new LambdaQueryWrapper<BatchDetail>()
.eq(BatchDetail::getBatchId, batchPO.getBatchId())
.eq(BatchDetail::getDelFlag, "1"));
List<BatchDetailPO> batchDetailPOS = new ArrayList<>();
// 逐个对象拷贝
for (BatchDetail detail : batchDetailList) {
BatchDetailPO detailPO = new BatchDetailPO();
BeanUtils.copyProperties(detail, detailPO);
batchDetailPOS.add(detailPO);
}
batchPO.setBatchDetailList(batchDetailPOS);
}
return batchPOS;
}
@@ -45,6 +45,10 @@ public class BatchDetailApplicationService {
batchDetailDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId());
}
}
// 如果未指定isDisplay默认只查询显示的数据isDisplay=1
if (batchDetailDO.getIsDisplay() == null) {
batchDetailDO.setIsDisplay(1);
}
return batchDetailDomainService.queryList(batchDetailDO);
}
@@ -38,10 +38,30 @@ public class ContainerApplicationService {
public List<ContainerPO> queryList(ContainerDO containerDO) {
LoginUser loginUser = SecurityUtils.getLoginUser();
if (loginUser != null){
if (loginUser != null && loginUser.getUserPo() != null){
Long loginUserOrganizationId = loginUser.getUserPo().getOrganizationId();
Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId();
if (topOrganizationId != null && topOrganizationId != 1){
containerDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId());
// 数据权限根据organizationId来设置查询权限
// organizationId等于2827时查询全部其他仅查询各自组织的信息
if (loginUserOrganizationId != null && loginUserOrganizationId.equals(2827L)) {
// 南光组织organizationId=2827可以查询所有组织的数据
// 如果前端传递了 organizationId使用前端传递的值进行过滤
// 如果前端没有传递 organizationId清空组织过滤条件查询所有组织的数据
if (containerDO.getOrganizationId() == null) {
containerDO.setOrganizationId(null);
containerDO.setTopOrganizationId(null);
}
} else {
// 其他组织设置organizationId只查询当前组织的数据
if (topOrganizationId != null && topOrganizationId != 1){
containerDO.setTopOrganizationId(topOrganizationId);
}
// 如果前端传递了organizationId验证是否与当前登录用户的组织ID一致
if (containerDO.getOrganizationId() != null && !containerDO.getOrganizationId().equals(loginUserOrganizationId)) {
// 前端传递了其他组织的organizationId强制使用当前登录用户的组织ID防止越权查询
containerDO.setOrganizationId(loginUserOrganizationId);
}
}
}
return containerDomainService.queryList(containerDO);
@@ -52,8 +72,13 @@ public class ContainerApplicationService {
* 新增容器管理
*/
public Boolean insert(ContainerDO containerDO) {
//翻译库区类型
setDataDict(containerDO);
// 设置当前登录用户的组织信息
LoginUser loginUser = SecurityUtils.getLoginUser();
if (loginUser != null && loginUser.getUserPo() != null) {
containerDO.setOrganizationId(loginUser.getUserPo().getOrganizationId());
containerDO.setOrganizationName(loginUser.getUserPo().getOrganizationName());
containerDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId());
}
return containerDomainService.insert(containerDO);
}
@@ -90,22 +115,4 @@ public class ContainerApplicationService {
return containerDomainService.nullifyByIds(containerIds);
}
/**
* @description 设置数据字典键值
* @author ZhouGY
* @date 2024/4/7 14:33
* @param containerDO
*/
private void setDataDict(ContainerDO containerDO){
//翻译容器类型
List<SysDictData> storageTypeDictDataList = dictTypeService.selectDictDataByType(DictCode.CONTAINER_TYPE.getCode());
if (null == storageTypeDictDataList) {
throw new ServiceException("容器类型数据字典不存在 请联系管理员");
}
SysDictData storageTypeDictData = storageTypeDictDataList.stream().filter(info -> ObjectUtil.equal(info.getDictValue(), containerDO.getContainerType())).findAny().orElse(null);
if (null == storageTypeDictData) {
throw new ServiceException("容器类型【" + containerDO.getContainerType() + "】数据字典不存在 请联系管理员");
}
containerDO.setContainerTypeName(storageTypeDictData.getDictLabel());
}
}
@@ -22,6 +22,7 @@ import com.mhd.common.core.web.domain.AjaxResult;
import com.mhd.common.security.utils.SecurityUtils;
import com.mhd.system.api.SystemServiceFeign;
import com.mhd.system.api.model.LoginUser;
import com.mhd.common.core.domain.po.UserPo;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@@ -50,29 +51,131 @@ public class ExpenseAccountApplicationService {
/**
* 分页查询费用科目列表
*/
public List<ExpenseAccountPO> queryList(ExpenseAccountDO expenseAccountDO) {
setTopOrganizationIdLogin(expenseAccountDO);
return expenseAccountDomainService.queryList(expenseAccountDO);
try {
log.info("开始查询费用科目列表,参数:organizationId={}, topOrganizationId={}, expenseAccountDO={}",
expenseAccountDO.getOrganizationId(), expenseAccountDO.getTopOrganizationId(), expenseAccountDO);
setDataPermission(expenseAccountDO);
// 处理 createByName updateByName 字段
// 问题ExpenseAccountAssembler 在查询场景下可能会自动设置 createByName updateByName 为当前登录用户名
// 这会导致 SQL 中添加 create_by_name LIKE '%nanguang%' update_by_name LIKE '%nanguang%' 条件
// 解决方案
// 1. 如果查询所有组织organizationId topOrganizationId 都为 null清空这些字段除非前端明确传递了这些字段作为查询条件
// 2. 如果查询指定组织organizationId 不为 null且是南光组织查询如果 createByName updateByName 等于当前登录用户名清空它们
LoginUser loginUser = SecurityUtils.getLoginUser();
if (loginUser != null && loginUser.getUserPo() != null) {
Long loginUserOrganizationId = loginUser.getUserPo().getOrganizationId();
String currentUserName = loginUser.getUsername();
// 先保存前端传递的 createByName updateByName用于判断是否是前端传递的查询条件
String frontendCreateByName = expenseAccountDO.getCreateByName();
String frontendUpdateByName = expenseAccountDO.getUpdateByName();
if (expenseAccountDO.getOrganizationId() == null && expenseAccountDO.getTopOrganizationId() == null) {
// 查询所有组织的数据时不应该通过创建者或更新者来过滤清空这些字段
// 除非前端明确传递了这些字段作为查询条件
if (frontendCreateByName == null || frontendCreateByName.isEmpty() ||
(currentUserName != null && frontendCreateByName.equals(currentUserName))) {
// 前端未传递或者等于当前登录用户名可能是 Assembler 自动设置的清空
log.info("查询所有组织数据,清空 createByName 过滤条件(前端未传递或由 Assembler 自动设置)");
expenseAccountDO.setCreateByName(null);
}
if (frontendUpdateByName == null || frontendUpdateByName.isEmpty() ||
(currentUserName != null && frontendUpdateByName.equals(currentUserName))) {
// 前端未传递或者等于当前登录用户名可能是 Assembler 自动设置的清空
log.info("查询所有组织数据,清空 updateByName 过滤条件(前端未传递或由 Assembler 自动设置)");
expenseAccountDO.setUpdateByName(null);
}
} else if (expenseAccountDO.getOrganizationId() != null && loginUserOrganizationId != null && loginUserOrganizationId.equals(2827L)) {
// 南光组织查询指定组织时如果 createByName updateByName 等于当前登录用户名说明可能是 Assembler 自动设置的
// 清空这些字段避免限制查询结果因为其他组织的数据可能不是当前登录用户创建的
if (currentUserName != null) {
if (expenseAccountDO.getCreateByName() != null && expenseAccountDO.getCreateByName().equals(currentUserName)) {
log.info("南光组织查询指定组织数据(organizationId={}),清空 createByName 过滤条件(可能由 Assembler 自动设置)",
expenseAccountDO.getOrganizationId());
expenseAccountDO.setCreateByName(null);
}
if (expenseAccountDO.getUpdateByName() != null && expenseAccountDO.getUpdateByName().equals(currentUserName)) {
log.info("南光组织查询指定组织数据(organizationId={}),清空 updateByName 过滤条件(可能由 Assembler 自动设置)",
expenseAccountDO.getOrganizationId());
expenseAccountDO.setUpdateByName(null);
}
}
}
}
log.info("设置组织ID后,查询参数:organizationId={}, topOrganizationId={}, createByName={}, updateByName={}",
expenseAccountDO.getOrganizationId(), expenseAccountDO.getTopOrganizationId(),
expenseAccountDO.getCreateByName(), expenseAccountDO.getUpdateByName());
List<ExpenseAccountPO> result = expenseAccountDomainService.queryList(expenseAccountDO);
log.info("查询费用科目列表成功,返回数据条数:{}", result != null ? result.size() : 0);
return result;
} catch (Exception e) {
log.error("查询费用科目列表异常", e);
throw e;
}
}
public List<ExpenseAccountPO> treeCostSubject(ExpenseAccountDO expenseAccountDO){
setTopOrganizationIdLogin(expenseAccountDO);
setDataPermission(expenseAccountDO);
return expenseAccountDomainService.treeCostSubject(expenseAccountDO);
}
public List<ExpenseAccountPO> subjectTreeCost(ExpenseAccountDO expenseAccountDO){
setTopOrganizationIdLogin(expenseAccountDO);
setDataPermission(expenseAccountDO);
return expenseAccountDomainService.treeCostSubject(expenseAccountDO);
}
private void setTopOrganizationIdLogin(ExpenseAccountDO expenseAccountDO){
/**
* 根据当前登录用户的组织信息实现数据隔离
* 当前登录用户为组织ID字段organization_id为2827时可查全部组织数据其他组织只能查自己
*/
private void setDataPermission(ExpenseAccountDO expenseAccountDO){
LoginUser loginUser = SecurityUtils.getLoginUser();
if (loginUser != null){
Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId();
if (topOrganizationId != null && topOrganizationId != 1){
expenseAccountDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId());
if (loginUser == null || loginUser.getUserPo() == null) {
log.warn("费用科目查询 - 未获取到登录用户信息,跳过数据权限过滤");
return;
}
UserPo userPo = loginUser.getUserPo();
Long loginUserOrganizationId = userPo.getOrganizationId();
Long topOrganizationId = userPo.getTopOrganizationId();
// 先保存前端传递的 organizationId如果存在
Long frontendOrganizationId = expenseAccountDO.getOrganizationId();
// 数据权限根据 organizationId 来设置查询权限
// 当前登录用户的 organizationId 2827 可查全部组织数据其他组织只能查自己
if (loginUserOrganizationId != null && loginUserOrganizationId.equals(2827L)) {
// 南光组织organizationId=2827可以查询所有组织的数据
// 如果前端传递了 organizationId使用前端传递的值进行过滤
// 如果前端没有传递 organizationId清空组织过滤条件查询所有组织的数据
if (frontendOrganizationId != null) {
expenseAccountDO.setOrganizationId(frontendOrganizationId);
expenseAccountDO.setTopOrganizationId(null);
} else {
expenseAccountDO.setOrganizationId(null);
expenseAccountDO.setTopOrganizationId(null);
}
} else {
// 其他组织设置 organizationId只查询当前组织的数据
if (frontendOrganizationId != null) {
// 前端传递了 organizationId验证是否与当前登录用户的组织ID一致
if (!frontendOrganizationId.equals(loginUserOrganizationId)) {
log.warn("费用科目查询 - 前端传递的组织ID {} 与当前登录用户的组织ID {} 不一致,使用当前登录用户的组织ID进行过滤",
frontendOrganizationId, loginUserOrganizationId);
expenseAccountDO.setOrganizationId(loginUserOrganizationId);
} else {
expenseAccountDO.setOrganizationId(frontendOrganizationId);
}
expenseAccountDO.setTopOrganizationId(topOrganizationId);
} else {
// 前端没有传递 organizationId使用当前登录用户的组织ID
if (loginUserOrganizationId != null) {
expenseAccountDO.setOrganizationId(loginUserOrganizationId);
}
expenseAccountDO.setTopOrganizationId(topOrganizationId);
}
}
}
@@ -276,6 +379,35 @@ public class ExpenseAccountApplicationService {
expenseAccountDO.setUpdateByName(loginUser.getUsername());
return expenseAccountDomainService.update(expenseAccountDO);
}
/**
* 修改创建订单是否固定显示 0- 1-
* @param expenseAccountDTO
* @return
*/
public boolean changeFixedOrderDisplay(ExpenseAccountDTO expenseAccountDTO) {
//获取登录用户信息
LoginUser loginUser = SecurityUtils.getLoginUser();
if (ObjectUtil.isNull(loginUser)) {
throw new DigitalLogisticsException(UserError.TIMEOUT);
}
//根据id修改启用状态停用状态
if(expenseAccountDTO.getExpenseAccountId() == null){
throw new ServiceException("费用科目id不能为空");
}
if(expenseAccountDTO.getFixedOrderDisplay() == null){
throw new ServiceException("状态不能为空");
}
if(expenseAccountDTO.getFixedOrderDisplay() != 0 && expenseAccountDTO.getFixedOrderDisplay()!=1){
throw new ServiceException("状态错误");
}
ExpenseAccountDO expenseAccountDO = new ExpenseAccountDO();
expenseAccountDO.setExpenseAccountId(expenseAccountDTO.getExpenseAccountId());
expenseAccountDO.setFixedOrderDisplay(expenseAccountDTO.getFixedOrderDisplay());
expenseAccountDO.setUpdateBy(loginUser.getUserid());
expenseAccountDO.setUpdateTime(new Date());
expenseAccountDO.setUpdateByName(loginUser.getUsername());
return expenseAccountDomainService.update(expenseAccountDO);
}
/**
* 根据编码查询费用科目信息
*/
@@ -287,13 +419,44 @@ public class ExpenseAccountApplicationService {
}
public List<QueryExpenseAccountPO> selectExpenseAccount(SearchExpenseAccountDO searchExpenseAccountDO){
setDataPermissionForSearch(searchExpenseAccountDO);
return expenseAccountDomainService.selectExpenseAccount(searchExpenseAccountDO);
}
public List<QueryExpenseAccountPO> selectOtherExpenseAccount(SearchExpenseAccountDO searchExpenseAccountDO){
setDataPermissionForSearch(searchExpenseAccountDO);
return expenseAccountDomainService.selectOtherExpenseAccount(searchExpenseAccountDO);
}
/**
* SearchExpenseAccountDO 设置数据权限
*/
private void setDataPermissionForSearch(SearchExpenseAccountDO searchExpenseAccountDO) {
LoginUser loginUser = SecurityUtils.getLoginUser();
if (loginUser == null || loginUser.getUserPo() == null) {
log.warn("费用科目查询 - 未获取到登录用户信息,跳过数据权限过滤");
return;
}
UserPo userPo = loginUser.getUserPo();
Long loginUserOrganizationId = userPo.getOrganizationId();
Long topOrganizationId = userPo.getTopOrganizationId();
// 数据权限根据 organizationId 来设置查询权限
// 当前登录用户的 organizationId 2827 可查全部组织数据其他组织只能查自己
if (loginUserOrganizationId != null && loginUserOrganizationId.equals(2827L)) {
// 南光组织organizationId=2827可以查询所有组织的数据不设置组织过滤条件
searchExpenseAccountDO.setOrganizationId(null);
searchExpenseAccountDO.setTopOrganizationId(null);
} else {
// 其他组织只查询当前组织的数据
if (loginUserOrganizationId != null) {
searchExpenseAccountDO.setOrganizationId(loginUserOrganizationId);
}
searchExpenseAccountDO.setTopOrganizationId(topOrganizationId);
}
}
public List<QueryExpenseAccountPO> selectSocialVehicleExpenseAccount(){
return expenseAccountDomainService.selectSocialVehicleExpenseAccount();
}
@@ -120,7 +120,11 @@ public class MaterialBaseInfoApplicationService {
throw new ServiceException("获取货主信息失败");
}
UserPo userPo = JSON.parseObject(JSONObject.toJSONString(ajaxResult.get("data")), UserPo.class);
materialBaseInfoDO.setShipperName(userPo.getUserName());
// 如果原始shipperName不为空保留原始值导入或手动输入时应该保留完整名称
// 只有在原始shipperName为空时才使用查询到的userName
if (materialBaseInfoDO.getShipperName() == null || materialBaseInfoDO.getShipperName().trim().isEmpty()) {
materialBaseInfoDO.setShipperName(userPo.getUserName());
}
}
public List<MaterialStockInfoVo> getMaterialStockList(String shipperName, String materialName,
@@ -35,24 +35,190 @@ public class ServiceItemsManageApplicationService {
/**
* 分页查询服务项管理列表
*/
public List<ServiceItemsManagePO> queryList(ServiceItemsManageDO serviceItemsManageDO) {
setTopOrganizationIdLogin(serviceItemsManageDO);
return serviceItemsManageDomainService.queryList(serviceItemsManageDO);
try {
log.info("开始查询服务项管理列表,参数:organizationId={}, topOrganizationId={}, serviceItemsManageDO={}",
serviceItemsManageDO.getOrganizationId(), serviceItemsManageDO.getTopOrganizationId(), serviceItemsManageDO);
// 先保存前端传递的 organizationId topOrganizationId如果存在
// 注意这里需要在设置权限逻辑之前保存因为 Assembler 可能已经设置了这些值
Long frontendOrganizationId = serviceItemsManageDO.getOrganizationId();
Long frontendTopOrganizationId = serviceItemsManageDO.getTopOrganizationId();
// 获取登录用户信息
LoginUser loginUser = SecurityUtils.getLoginUser();
Long loginUserOrganizationId = null;
Long loginUserTopOrganizationId = null;
if (loginUser != null && loginUser.getUserPo() != null) {
loginUserOrganizationId = loginUser.getUserPo().getOrganizationId();
loginUserTopOrganizationId = loginUser.getUserPo().getTopOrganizationId();
}
log.info("登录用户信息:loginUserOrganizationId={}, loginUserTopOrganizationId={}, 前端传递:frontendOrganizationId={}, frontendTopOrganizationId={}",
loginUserOrganizationId, loginUserTopOrganizationId, frontendOrganizationId, frontendTopOrganizationId);
// 数据权限根据 organizationId 来设置查询权限
// 当前登录用户的 organizationId 2827 可查全部组织数据其他组织只能查自己
if (loginUserOrganizationId != null && loginUserOrganizationId.equals(2827L)) {
// 南光组织organizationId=2827可以查询所有组织的数据
// 如果前端传递了 organizationId包括2827或其他组织使用前端传递的值进行过滤
// 如果前端没有传递 organizationId清空组织过滤条件查询所有组织的数据
if (frontendOrganizationId != null) {
// 前端传递了 organizationId包括2827或其他组织使用前端传递的值进行过滤
serviceItemsManageDO.setOrganizationId(frontendOrganizationId);
serviceItemsManageDO.setTopOrganizationId(null); // 明确设置为 null避免使用 topOrganizationId 条件
log.info("南光组织查询指定组织:organizationId={}", frontendOrganizationId);
} else {
// 前端没有传递 organizationId清空组织过滤条件查询所有组织的数据
serviceItemsManageDO.setOrganizationId(null);
serviceItemsManageDO.setTopOrganizationId(null);
log.info("南光组织查询所有组织:不设置组织过滤条件");
}
} else {
// 其他组织设置organizationId只查询当前组织的数据
// 其他组织只能查询自己组织的数据不能查询其他组织的数据
if (frontendOrganizationId != null) {
// 前端传递了 organizationId验证是否与当前登录用户的组织ID一致
if (!frontendOrganizationId.equals(loginUserOrganizationId)) {
// 前端传递了其他组织的 organizationId强制使用当前登录用户的组织ID防止越权查询
log.warn("服务项管理查询 - 前端传递的组织ID {} 与当前登录用户的组织ID {} 不一致,使用当前登录用户的组织ID进行过滤",
frontendOrganizationId, loginUserOrganizationId);
serviceItemsManageDO.setOrganizationId(loginUserOrganizationId);
} else {
// 前端传递的 organizationId 与当前登录用户的组织ID一致使用前端传递的值
serviceItemsManageDO.setOrganizationId(frontendOrganizationId);
}
if (loginUserTopOrganizationId != null) {
serviceItemsManageDO.setTopOrganizationId(loginUserTopOrganizationId);
}
} else {
// 前端没有传递 organizationId使用当前登录用户的组织ID
if (loginUserOrganizationId != null) {
serviceItemsManageDO.setOrganizationId(loginUserOrganizationId);
}
if (loginUserTopOrganizationId != null) {
serviceItemsManageDO.setTopOrganizationId(loginUserTopOrganizationId);
}
}
}
// 处理 createByName updateByName 字段
// 问题Assembler 在查询场景下serviceItemsManageId == null会自动设置 createByName updateByName 为当前登录用户名
// 这会导致 SQL 中添加 create_by_name LIKE '%nanguang%' update_by_name LIKE '%nanguang%' 条件
// 解决方案
// 1. 如果查询所有组织organizationId topOrganizationId 都为 null清空这些字段
// 2. 如果查询指定组织organizationId 不为 null且是南光组织查询如果 createByName updateByName 等于当前登录用户名清空它们
// 因为查询其他组织的数据时不应该通过当前登录用户的名称来过滤
// 注意这种方法可能会误判如果前端确实传递了当前登录用户名作为查询条件但这种情况很少见且影响较小
String currentUserName = null;
if (loginUser != null && loginUser.getUserPo() != null) {
currentUserName = loginUser.getUsername();
}
if (serviceItemsManageDO.getOrganizationId() == null && serviceItemsManageDO.getTopOrganizationId() == null) {
// 查询所有组织的数据时不应该通过创建者或更新者来过滤清空这些字段
log.info("查询所有组织数据,清空 createByName 和 updateByName 过滤条件,避免限制查询结果");
serviceItemsManageDO.setCreateByName(null);
serviceItemsManageDO.setUpdateByName(null);
} else if (serviceItemsManageDO.getOrganizationId() != null && loginUserOrganizationId != null && loginUserOrganizationId.equals(2827L)) {
// 南光组织查询指定组织时如果 createByName updateByName 等于当前登录用户名说明可能是 Assembler 自动设置的
// 清空这些字段避免限制查询结果因为其他组织的数据可能不是当前登录用户创建的
if (currentUserName != null) {
if (serviceItemsManageDO.getCreateByName() != null && serviceItemsManageDO.getCreateByName().equals(currentUserName)) {
log.info("南光组织查询指定组织数据(organizationId={}),清空 createByName 过滤条件(可能由 Assembler 自动设置)",
serviceItemsManageDO.getOrganizationId());
serviceItemsManageDO.setCreateByName(null);
}
if (serviceItemsManageDO.getUpdateByName() != null && serviceItemsManageDO.getUpdateByName().equals(currentUserName)) {
log.info("南光组织查询指定组织数据(organizationId={}),清空 updateByName 过滤条件(可能由 Assembler 自动设置)",
serviceItemsManageDO.getOrganizationId());
serviceItemsManageDO.setUpdateByName(null);
}
}
}
log.info("设置组织ID后,查询参数:organizationId={}, topOrganizationId={}, createByName={}, updateByName={}",
serviceItemsManageDO.getOrganizationId(), serviceItemsManageDO.getTopOrganizationId(),
serviceItemsManageDO.getCreateByName(), serviceItemsManageDO.getUpdateByName());
List<ServiceItemsManagePO> result = serviceItemsManageDomainService.queryList(serviceItemsManageDO);
log.info("查询服务项管理列表成功,返回数据条数:{}", result != null ? result.size() : 0);
return result;
} catch (Exception e) {
log.error("查询服务项管理列表异常", e);
throw e;
}
}
public List<ServiceItemsManagePO> getCostTypeList(ServiceItemsManageDO serviceItemsManageDO){
setTopOrganizationIdLogin(serviceItemsManageDO);
return serviceItemsManageDomainService.getCostsType(serviceItemsManageDO);
}
private void setTopOrganizationIdLogin(ServiceItemsManageDO serviceItemsManageDO){
LoginUser loginUser = SecurityUtils.getLoginUser();
if (loginUser != null){
Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId();
if (topOrganizationId != null && topOrganizationId != 1){
serviceItemsManageDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId());
try {
log.info("开始查询费用类别列表,参数:{}", serviceItemsManageDO);
// 先保存前端传递的 organizationId如果存在
Long frontendOrganizationId = serviceItemsManageDO.getOrganizationId();
// 获取登录用户信息
LoginUser loginUser = SecurityUtils.getLoginUser();
Long loginUserOrganizationId = null;
Long topOrganizationId = null;
if (loginUser != null && loginUser.getUserPo() != null) {
loginUserOrganizationId = loginUser.getUserPo().getOrganizationId();
topOrganizationId = loginUser.getUserPo().getTopOrganizationId();
}
// 数据权限根据 organizationId 来设置查询权限
// 当前登录用户的 organizationId 2827 可查全部组织数据其他组织只能查自己
if (loginUserOrganizationId != null && loginUserOrganizationId.equals(2827L)) {
// 南光组织organizationId=2827可以查询所有组织的数据
// 如果前端传递了 organizationId包括2827使用前端传递的值进行过滤
// 如果前端没有传递 organizationId清空组织过滤条件查询所有组织的数据
if (frontendOrganizationId != null) {
// 前端传递了 organizationId包括2827或其他组织使用前端传递的值进行过滤
serviceItemsManageDO.setOrganizationId(frontendOrganizationId);
serviceItemsManageDO.setTopOrganizationId(null);
} else {
// 前端没有传递 organizationId清空组织过滤条件查询所有组织的数据
serviceItemsManageDO.setOrganizationId(null);
serviceItemsManageDO.setTopOrganizationId(null);
}
} else {
// 其他组织设置organizationId只查询当前组织的数据
// 其他组织只能查询自己组织的数据不能查询其他组织的数据
if (frontendOrganizationId != null) {
// 前端传递了 organizationId验证是否与当前登录用户的组织ID一致
if (!frontendOrganizationId.equals(loginUserOrganizationId)) {
// 前端传递了其他组织的 organizationId强制使用当前登录用户的组织ID防止越权查询
log.warn("费用类别查询 - 前端传递的组织ID {} 与当前登录用户的组织ID {} 不一致,使用当前登录用户的组织ID进行过滤",
frontendOrganizationId, loginUserOrganizationId);
serviceItemsManageDO.setOrganizationId(loginUserOrganizationId);
} else {
// 前端传递的 organizationId 与当前登录用户的组织ID一致使用前端传递的值
serviceItemsManageDO.setOrganizationId(frontendOrganizationId);
}
if (topOrganizationId != null) {
serviceItemsManageDO.setTopOrganizationId(topOrganizationId);
}
} else {
// 前端没有传递 organizationId使用当前登录用户的组织ID
if (loginUserOrganizationId != null) {
serviceItemsManageDO.setOrganizationId(loginUserOrganizationId);
}
if (topOrganizationId != null) {
serviceItemsManageDO.setTopOrganizationId(topOrganizationId);
}
}
}
log.info("设置组织ID后,费用类别查询参数:organizationId={}, topOrganizationId={}",
serviceItemsManageDO.getOrganizationId(), serviceItemsManageDO.getTopOrganizationId());
List<ServiceItemsManagePO> result = serviceItemsManageDomainService.getCostsType(serviceItemsManageDO);
log.info("查询费用类别列表成功,返回数据条数:{}", result != null ? result.size() : 0);
return result;
} catch (Exception e) {
log.error("查询费用类别列表异常", e);
throw e;
}
}
@@ -0,0 +1,160 @@
package com.mhd.basic.application.service.shipperLeaseDetails;
import cn.hutool.core.util.ObjectUtil;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.mhd.basic.application.service.storageSection.StorageSectionApplicationService;
import com.mhd.basic.domain.lease.entity.Lease;
import com.mhd.basic.domain.lease.repository.facade.ILeaseService;
import com.mhd.basic.domain.lease.repository.po.LeasePO;
import com.mhd.basic.domain.lease.repository.todo.LeaseDO;
import com.mhd.basic.domain.lease.service.LeaseDomainService;
import com.mhd.basic.domain.shipperLeaseDetails.entity.ShipperLeaseDetails;
import com.mhd.basic.domain.shipperLeaseDetails.entity.WarehouseOccupancyRate;
import com.mhd.basic.domain.shipperLeaseDetails.repository.facade.IShipperLeaseDetailsService;
import com.mhd.basic.domain.shipperLeaseDetails.repository.po.ShipperLeaseDetailsPO;
import com.mhd.basic.domain.shipperLeaseDetails.repository.todo.ShipperLeaseDetailsDO;
import com.mhd.basic.domain.shipperLeaseDetails.service.ShipperLeaseDetailsDomainService;
import com.mhd.basic.domain.storageSection.repository.po.StorageSectionPO;
import com.mhd.basic.domain.storageSection.repository.todo.StorageSectionDO;
import com.mhd.basic.interfaces.dto.lease.LeaseDTO;
import com.mhd.common.core.exception.ServiceException;
import com.mhd.common.core.web.domain.AjaxResult;
import com.mhd.common.security.utils.SecurityUtils;
import com.mhd.system.api.WmsServiceFeign;
import com.mhd.system.api.domain.MaterialInventoryDTO;
import com.mhd.system.api.model.LoginUser;
import com.mhd.system.service.ISysDictTypeService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Service;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.TreeMap;
import java.util.stream.Collectors;
/**
* 货主租赁明细ApplicationService
*
* @author gen
* @date 2024-05-07
*/
@Service
@Slf4j
public class ShipperLeaseDetailsApplicationService {
@Autowired
private ShipperLeaseDetailsDomainService shipperLeaseDetailsDomainService;
@Autowired
private ISysDictTypeService dictTypeService;
/**
* 分页查询货主租赁明细列表
*/
public List<ShipperLeaseDetailsPO> queryList(ShipperLeaseDetailsDO shipperLeaseDetailsDO) {
LoginUser loginUser = SecurityUtils.getLoginUser();
if (loginUser != null && loginUser.getUserPo() != null){
Long loginUserOrganizationId = loginUser.getUserPo().getOrganizationId();
Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId();
// 数据权限根据organizationId来设置查询权限
// organizationId等于2827时查询全部其他仅查询各自组织的信息
if (loginUserOrganizationId != null && loginUserOrganizationId.equals(2827L)) {
// 南光组织organizationId=2827可以查询所有组织的数据
// 如果前端传递了 organizationId使用前端传递的值进行过滤
// 如果前端没有传递 organizationId清空组织过滤条件查询所有组织的数据
if (shipperLeaseDetailsDO.getOrganizationId() == null) {
shipperLeaseDetailsDO.setOrganizationId(null);
shipperLeaseDetailsDO.setTopOrganizationId(null);
}
} else {
// 其他组织设置organizationId只查询当前组织的数据
if (topOrganizationId != null && topOrganizationId != 1){
shipperLeaseDetailsDO.setTopOrganizationId(topOrganizationId);
}
// 如果前端传递了organizationId验证是否与当前登录用户的组织ID一致
if (shipperLeaseDetailsDO.getOrganizationId() != null && !shipperLeaseDetailsDO.getOrganizationId().equals(loginUserOrganizationId)) {
// 前端传递了其他组织的organizationId强制使用当前登录用户的组织ID防止越权查询
shipperLeaseDetailsDO.setOrganizationId(loginUserOrganizationId);
}
}
}
return shipperLeaseDetailsDomainService.queryList(shipperLeaseDetailsDO);
}
/**
* 新增货主租赁明细
*/
public Boolean insert(ShipperLeaseDetailsDO shipperLeaseDetailsDO) {
// 设置当前登录用户的组织信息
LoginUser loginUser = SecurityUtils.getLoginUser();
if (loginUser != null && loginUser.getUserPo() != null) {
shipperLeaseDetailsDO.setOrganizationId(loginUser.getUserPo().getOrganizationId());
shipperLeaseDetailsDO.setOrganizationName(loginUser.getUserPo().getOrganizationName());
shipperLeaseDetailsDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId());
}
return shipperLeaseDetailsDomainService.insert(shipperLeaseDetailsDO);
}
/**
* 修改货主租赁明细
*/
public Boolean update(ShipperLeaseDetailsDO shipperLeaseDetailsDO) {
return shipperLeaseDetailsDomainService.update(shipperLeaseDetailsDO);
}
/**
* 批量删除货主租赁明细
*/
public boolean delete(Long[] shipperLeaseDetailsIds) {
return shipperLeaseDetailsDomainService.delete(shipperLeaseDetailsIds);
}
/**
* 获取货主租赁明细详细信息
*/
public ShipperLeaseDetailsPO getInfo(Long shipperLeaseDetailsId)
{
return shipperLeaseDetailsDomainService.getInfo(shipperLeaseDetailsId);
}
/**
* @description 批量作废租赁
* @author ZhouGY
* @date 2024/5/13 9:46
* @return Boolean
*/
public Boolean nullifyByIds(List<Long> shipperLeaseDetailsIds){
return shipperLeaseDetailsDomainService.nullifyByIds(shipperLeaseDetailsIds);
}
// /**
// * @description 设置数据字典键值
// * @author ZhouGY
// * @date 2024/4/7 14:33
// * @param containerDO
// */
// private void setDataDict(LeaseDO leaseDO){
// //翻译租赁类型
// List<SysDictData> storageTypeDictDataList = dictTypeService.selectDictDataByType(DictCode.CONTAINER_TYPE.getCode());
// if (null == storageTypeDictDataList) {
// throw new ServiceException("租赁类型数据字典不存在 请联系管理员");
// }
// SysDictData storageTypeDictData = storageTypeDictDataList.stream().filter(info -> ObjectUtil.equal(info.getDictValue(), containerDO.getContainerType())).findAny().orElse(null);
// if (null == storageTypeDictData) {
// throw new ServiceException("租赁类型【" + leaseDO.getContainerType() + "】数据字典不存在 请联系管理员");
// }
// leaseDO.setContainerTypeName(storageTypeDictData.getDictLabel());
// }
}
@@ -49,8 +49,30 @@ public class StorageLocationApplicationService {
if (topOrganizationId != null && topOrganizationId != 1){
storageLocationDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId());
}
AssociationWarehouseCacheDO associationWarehouseCacheDO = SystemServiceCacheUtil.getAssociationWarehouseCache(loginUser.getUserid());
storageLocationDO.setWarehouseId(associationWarehouseCacheDO.getWarehouseId());
// 只有当前端没有明确传仓库条件时才使用用户关联仓库缓存进行过滤
// 避免出现单据仓库=常温仓但库位列表仍显示保税仓的错配问题
boolean hasWarehouseFilter = storageLocationDO.getWarehouseId() != null
|| (storageLocationDO.getWarehouseCode() != null && !storageLocationDO.getWarehouseCode().trim().isEmpty())
|| (storageLocationDO.getWarehouseName() != null && !storageLocationDO.getWarehouseName().trim().isEmpty());
if (!hasWarehouseFilter) {
try {
AssociationWarehouseCacheDO associationWarehouseCacheDO = SystemServiceCacheUtil.getAssociationWarehouseCache(loginUser.getUserid());
if (associationWarehouseCacheDO != null) {
if (associationWarehouseCacheDO.getWarehouseId() != null) {
storageLocationDO.setWarehouseId(associationWarehouseCacheDO.getWarehouseId());
}
if (associationWarehouseCacheDO.getWarehouseCode() != null && !associationWarehouseCacheDO.getWarehouseCode().trim().isEmpty()) {
storageLocationDO.setWarehouseCode(associationWarehouseCacheDO.getWarehouseCode());
}
if (associationWarehouseCacheDO.getWarehouseName() != null && !associationWarehouseCacheDO.getWarehouseName().trim().isEmpty()) {
storageLocationDO.setWarehouseName(associationWarehouseCacheDO.getWarehouseName());
}
}
} catch (Exception e) {
// 获取失败不影响查询允许查询所有仓库或由前端传参控制
log.warn("获取用户关联仓库信息失败,将按前端条件查询库位数据,用户ID:{},错误:{}", loginUser.getUserid(), e.getMessage());
}
}
}
return storageLocationDomainService.queryList(storageLocationDO);
}
@@ -43,9 +43,9 @@ public class WarehouseApplicationService {
public List<WarehousePO> queryList(WarehouseDO warehouseDO) {
LoginUser loginUser = SecurityUtils.getLoginUser();
if (loginUser != null){
Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId();
if (topOrganizationId != null && topOrganizationId != 1){
warehouseDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId());
Long organizationId = loginUser.getUserPo().getOrganizationId();
if (organizationId != null && organizationId != 1){
warehouseDO.setOrganizationId(loginUser.getUserPo().getOrganizationId());
}
}
return warehouseDomainService.queryList(warehouseDO);
@@ -56,6 +56,13 @@ public class WarehouseApplicationService {
* 新增仓库
*/
public Boolean insert(WarehouseDO warehouseDO) {
// 设置当前登录用户的组织信息
LoginUser loginUser = SecurityUtils.getLoginUser();
if (loginUser != null && loginUser.getUserPo() != null) {
warehouseDO.setOrganizationId(loginUser.getUserPo().getOrganizationId());
warehouseDO.setOrganizationName(loginUser.getUserPo().getOrganizationName());
warehouseDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId());
}
//设置数据字典键值
setDataDict(warehouseDO);
return warehouseDomainService.insert(warehouseDO);
@@ -126,4 +126,7 @@ public class CommonRouteDo extends BaseVOEntity
@ApiModelProperty(name = "运费单价")
private BigDecimal freightUnitPrice;
@ApiModelProperty(name = "组织ID(用于数据权限过滤,内部使用)", hidden = true)
private Long organizationId;
}
@@ -46,6 +46,10 @@ public class BatchDetail extends BaseVOEntity{
@Excel(name = "批次标签")
private String batchLabels;
@ApiModelProperty("字段名称")
@Excel(name = "字段名称")
private String fieldName;
@ApiModelProperty("输入控制: 1-必填 2-可选")
@Excel(name = "输入控制: 1-必填 2-可选")
private String inputControl;
@@ -58,6 +62,10 @@ public class BatchDetail extends BaseVOEntity{
@Excel(name = "属性选项")
private String attributeOption;
@ApiModelProperty("是否显示: 0-不显示 1-显示")
@Excel(name = "是否显示: 0-不显示 1-显示")
private Integer isDisplay;
@ApiModelProperty("备注")
@Excel(name = "备注")
private String remark;
@@ -62,24 +62,40 @@ public class BatchDetailImpl extends ServiceImpl<BatchDetailMapper, BatchDetail>
LoginUser loginUser = SecurityUtils.getLoginUser();
UserPo userPo = loginUser.getUserPo();
List<BatchDetailDO> batchDetailDOList = batchDO.getBatchDetailList();
//验证提交的数据是否存在重复
// 验证本次提交的数据是否存在重复同一批次内不允许重复标签
long count = batchDetailDOList.stream().map(BatchDetailDO::getBatchLabels).distinct().count();
if (batchDetailDOList.size() != count){
throw new ServiceException("批次标签不允许重复,请检查提交的数据");
}
// 查询当前批次原有的标签明细
List<BatchDetail> batchDetailDbList = batchDetailMapper.selectList(new QueryWrapper<BatchDetail>().lambda()
.eq(BatchDetail::getBatchId, batchDO.getBatchId()));
// 如果数据库里已经有明细并且这次前端传过来的所有明细都没有明细ID
// 说明前端没有带回原来的主键这种情况我们视为完全替换
// 先物理删除当前批次下所有旧的明细再按本次数据重新插入避免命中数据库唯一索引冲突
boolean allNewWithoutId = CollectionUtil.isNotEmpty(batchDetailDOList)
&& batchDetailDOList.stream().allMatch(detail -> detail.getBatchDetailId() == null);
if (CollectionUtil.isNotEmpty(batchDetailDbList) && allNewWithoutId) {
batchDetailMapper.delete(new QueryWrapper<BatchDetail>().lambda()
.eq(BatchDetail::getBatchId, batchDO.getBatchId()));
batchDetailDbList = new ArrayList<>();
}
List<BatchDetail> batchDetailListSave = new ArrayList<>();
List<BatchDetail> batchDetailListSave2 = new ArrayList<>();
List<BatchDetail> batchDetailListUpdates = new ArrayList<>();
if (CollectionUtil.isNotEmpty(batchDetailDbList)){
Map<String, BatchDetail> batchDetailMap = batchDetailDbList.stream().collect(Collectors.toMap(BatchDetail::getBatchLabels, Function.identity()));
Map<Long, BatchDetail> batchDetailMap = batchDetailDbList.stream().collect(Collectors.toMap(BatchDetail::getBatchDetailId, Function.identity()));
for (BatchDetailDO batchDetailDO : batchDetailDOList){
BatchDetail batchDetailDb = batchDetailMap.get(batchDetailDO.getBatchLabels());
BatchDetail batchDetailDb = batchDetailMap.get(batchDetailDO.getBatchDetailId());
if (batchDetailDb != null){
batchDetailDb.setBatchLabels(batchDetailDO.getBatchLabels());
batchDetailDb.setFieldName(batchDetailDO.getFieldName());
batchDetailDb.setInputControl(batchDetailDO.getInputControl());
batchDetailDb.setAttributeFormat(batchDetailDO.getAttributeFormat());
batchDetailDb.setAttributeOption(batchDetailDO.getAttributeOption());
batchDetailDb.setIsDisplay(batchDetailDO.getIsDisplay());
batchDetailDb.setRemark(batchDetailDO.getRemark());
batchDetailDb.setDelFlag(1);
batchDetailListUpdates.add(batchDetailDb);
@@ -96,6 +112,20 @@ public class BatchDetailImpl extends ServiceImpl<BatchDetailMapper, BatchDetail>
batchDetailListSave.add(batchDetail);
}
}
}else {
//是空没有详情 新增
for (BatchDetailDO batchDetailDO : batchDetailDOList) {
BatchDetail batchDetail = new BatchDetail();
BeanUtils.copyProperties(batchDetailDO, batchDetail);
batchDetail.setBatchId(batchDO.getBatchId());
batchDetail.setOrganizationId(batchDO.getOrganizationId());
batchDetail.setOrganizationName(batchDO.getOrganizationName());
batchDetail.setTopOrganizationId(batchDO.getTopOrganizationId());
batchDetail.setCreateBy(userPo.getUserId());
batchDetail.setCreateByName(userPo.getUserName());
batchDetail.setCreateTime(new Date());
batchDetailListSave2.add(batchDetail);
}
}
//删除 之前存在 现在没有的
List<Long> batchDetailIds = batchDetailDbList.stream().map(BatchDetail::getBatchDetailId).collect(Collectors.toList());
@@ -113,6 +143,8 @@ public class BatchDetailImpl extends ServiceImpl<BatchDetailMapper, BatchDetail>
//新增
if (CollectionUtil.isNotEmpty(batchDetailListSave)){
saveBatch(batchDetailListSave);
}else if (CollectionUtil.isNotEmpty(batchDetailListSave2)){
saveBatch(batchDetailListSave2);
}
//修改
if (CollectionUtil.isNotEmpty(batchDetailListUpdates)){
@@ -45,6 +45,10 @@ public class BatchDetailPO extends BaseVOEntity{
@Excel(name = "批次标签")
private String batchLabels;
@ApiModelProperty("字段名称")
@Excel(name = "字段名称")
private String fieldName;
@ApiModelProperty("输入控制: 1-必填 2-可选")
@Excel(name = "输入控制: 1-必填 2-可选")
private String inputControl;
@@ -57,6 +61,10 @@ public class BatchDetailPO extends BaseVOEntity{
@Excel(name = "属性选项")
private String attributeOption;
@ApiModelProperty("是否显示: 0-不显示 1-显示")
@Excel(name = "是否显示: 0-不显示 1-显示")
private Integer isDisplay;
@ApiModelProperty("备注")
@Excel(name = "备注")
private String remark;
@@ -1,5 +1,7 @@
package com.mhd.basic.domain.batchDetail.repository.todo;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.mhd.common.core.annotation.Excel;
import lombok.Data;
import java.util.Date;
@@ -23,6 +25,7 @@ public class BatchDetailDO extends BaseVOEntity{
private static final long serialVersionUID = 1L;
@ApiModelProperty("批次管理详情id")
@TableId(type = IdType.AUTO)
private Long batchDetailId;
@ApiModelProperty("组织表ID")
@@ -45,6 +48,14 @@ public class BatchDetailDO extends BaseVOEntity{
@Excel(name = "批次标签")
private String batchLabels;
@ApiModelProperty("字段名称")
@Excel(name = "字段名称")
private String fieldName;
@ApiModelProperty("是否显示: 0-不显示 1-显示")
@Excel(name = "是否显示: 0-不显示 1-显示")
private Integer isDisplay;
@ApiModelProperty("输入控制: 1-必填 2-可选")
@Excel(name = "输入控制: 1-必填 2-可选")
private String inputControl;
@@ -57,6 +68,8 @@ public class BatchDetailDO extends BaseVOEntity{
@Excel(name = "属性选项")
private String attributeOption;
@ApiModelProperty("备注")
@Excel(name = "备注")
private String remark;
@@ -101,4 +101,10 @@ public class ExpenseAccount extends BaseVOEntity{
@ApiModelProperty(name = "收支类型")
private Integer accountExpenseType;
@ApiModelProperty(name = "创建订单是否固定显示 0-否 1-是")
private Integer fixedOrderDisplay;
@ApiModelProperty("费率")
private BigDecimal rate;
}
@@ -10,6 +10,7 @@ import com.mhd.basic.domain.expenseAccount.repository.todo.ExpenseAccountDO;
import com.mhd.basic.domain.expenseAccount.repository.todo.ExpenseAccountDoMap;
import com.mhd.basic.domain.expenseAccount.repository.todo.SearchExpenseAccountDO;
import com.mhd.basic.interfaces.dto.expenseAccount.SearchExpenseAccountDTO;
import lombok.extern.slf4j.Slf4j;
import org.apache.ibatis.annotations.Param;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
@@ -24,6 +25,7 @@ import java.util.List;
* @author gen
* @date 2024-06-04
*/
@Slf4j
@Service
public class ExpenseAccountImpl extends ServiceImpl<ExpenseAccountMapper, ExpenseAccount> implements IExpenseAccountService{
@Autowired
@@ -35,7 +37,15 @@ public class ExpenseAccountImpl extends ServiceImpl<ExpenseAccountMapper, Expens
@Override
public List<ExpenseAccountPO> queryList(ExpenseAccountDO expenseAccountDO)
{
return expenseAccountMapper.queryList(expenseAccountDO);
// 添加日志记录查询参数
log.info("ExpenseAccountImpl.queryList 查询参数:topOrganizationId={}, subjectName={}, subjectCode={}, status={}",
expenseAccountDO.getTopOrganizationId(),
expenseAccountDO.getSubjectName(),
expenseAccountDO.getSubjectCode(),
expenseAccountDO.getStatus());
List<ExpenseAccountPO> result = expenseAccountMapper.queryList(expenseAccountDO);
log.info("ExpenseAccountImpl.queryList 查询结果:{} 条", result != null ? result.size() : 0);
return result;
}
@Override
@@ -122,4 +122,11 @@ public class ExpenseAccountPO extends BaseVOEntity{
@Excel(name = "服务项税率")
private BigDecimal taxRate;
@ApiModelProperty("费率")
private BigDecimal rate;
@ApiModelProperty(name = "创建订单是否固定显示 0-否 1-是")
private Integer fixedOrderDisplay;
}
@@ -39,5 +39,16 @@ public class QueryExpenseAccountPO {
@Excel(name = "上级科目名称")
private String upperSubject;
@ApiModelProperty("一级组织表ID")
@Excel(name = "一级组织表ID")
private Long topOrganizationId;
@ApiModelProperty("组织表ID")
@Excel(name = "组织表ID")
private Long organizationId;
@ApiModelProperty("组织名称")
@Excel(name = "组织名称")
private String organizationName;
}
@@ -7,6 +7,7 @@ import com.fasterxml.jackson.annotation.JsonFormat;
import java.math.BigDecimal;
import io.swagger.annotations.ApiModelProperty;
import com.mhd.common.core.web.domain.BaseVOEntity;
import org.springframework.format.annotation.DateTimeFormat;
import java.util.List;
@@ -125,4 +126,24 @@ public class ExpenseAccountDO extends BaseVOEntity{
@ApiModelProperty("服务项名称")
private String serviceItemsName;
@ApiModelProperty("费率")
private BigDecimal rate;
@ApiModelProperty(name = "创建订单是否固定显示 0-否 1-是")
private Integer fixedOrderDisplay;
@ApiModelProperty(name = "创建者姓名")
private String createByName;
@ApiModelProperty(value = "创建时间")
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
private Date createTime;
@ApiModelProperty(value = "更新者")
private Long updateBy;
@ApiModelProperty(name = "创建者姓名")
private String updateByName;
}
@@ -25,4 +25,10 @@ public class SearchExpenseAccountDO{
@ApiModelProperty("社会车辆固定显示(1-是,2-否)")
private Integer societyStatus;
@ApiModelProperty("组织ID")
private Long organizationId;
@ApiModelProperty("上级组织ID")
private Long topOrganizationId;
}
@@ -0,0 +1,64 @@
package com.mhd.basic.domain.lease.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.mhd.common.core.annotation.Excel;
import com.mhd.common.core.web.domain.BaseVOEntity;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
import java.util.Date;
/**
* 租赁管理对象 container
*
*/
@Data
public class Lease extends BaseVOEntity{
private static final long serialVersionUID = 1L;
@ApiModelProperty("id")
@TableId(type = IdType.AUTO)
private Long id;
@ApiModelProperty("组织表ID")
@Excel(name = "组织表ID")
private Long organizationId;
@ApiModelProperty("组织名称")
@Excel(name = "组织名称")
private String organizationName;
@ApiModelProperty("一级组织表ID")
@Excel(name = "一级组织表ID")
private Long topOrganizationId;
@ApiModelProperty("仓库ID")
private Long warehouseId;
@ApiModelProperty("仓库名字")
private String warehouseName;
@ApiModelProperty("货主id")
private Long shipperId;
@ApiModelProperty("货主名称")
private String cargoOwnerName;
@ApiModelProperty(value = "租赁方式(整租/散租)")
private String leaseType;
@ApiModelProperty("租赁面积(m²)")
private BigDecimal leaseArea;
@ApiModelProperty("开始日期")
private Date startDate;
@ApiModelProperty("结束日期")
private Date endDate;
@ApiModelProperty("备注")
private String remark;
}
@@ -0,0 +1,43 @@
package com.mhd.basic.domain.lease.repository.facade;
import com.baomidou.mybatisplus.extension.service.IService;
import com.mhd.basic.domain.lease.entity.Lease;
import com.mhd.basic.domain.lease.repository.po.LeasePO;
import com.mhd.basic.domain.lease.repository.todo.LeaseDO;
import java.util.List;
/**
* 租赁管理Service接口
*
* @author gen
* @date 2024-05-07
*/
public interface ILeaseService extends IService<Lease>
{
/**
* 分页查询租赁管理列表
*/
public List<LeasePO> queryList(LeaseDO leaseDO);
/**
* 新增租赁管理
*/
public Boolean insert(LeaseDO leaseDO);
/**
* 修改租赁管理
*/
public Boolean update(LeaseDO leaseDO);
/**
* 批量删除租赁管理
*/
public Boolean delete(Long[] leaseIds);
/**
* 查询租赁管理
*/
public LeasePO getInfo(Long leaseId);
}
@@ -0,0 +1,21 @@
package com.mhd.basic.domain.lease.repository.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.mhd.basic.domain.lease.entity.Lease;
import com.mhd.basic.domain.lease.repository.po.LeasePO;
import com.mhd.basic.domain.lease.repository.todo.LeaseDO;
import java.util.List;
/**
* 租赁管理Mapper接口
*
*/
public interface LeaseMapper extends BaseMapper<Lease>
{
/**
* 查询租赁管理列表
*/
public List<LeasePO> queryList(LeaseDO leaseDO);
}
@@ -0,0 +1,114 @@
package com.mhd.basic.domain.lease.repository.persistence;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.mhd.basic.domain.lease.entity.Lease;
import com.mhd.basic.domain.lease.repository.facade.ILeaseService;
import com.mhd.basic.domain.lease.repository.mapper.LeaseMapper;
import com.mhd.basic.domain.lease.repository.po.LeasePO;
import com.mhd.basic.domain.lease.repository.todo.LeaseDO;
import com.mhd.common.security.utils.SecurityUtils;
import com.mhd.system.api.model.LoginUser;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
/**
* 容器管理Service业务层处理
*
* @author gen
* @date 2024-05-07
*/
@Service
public class LeaseImpl extends ServiceImpl<LeaseMapper, Lease> implements ILeaseService {
@Autowired
private LeaseMapper leaseMapper;
/**
* 查询容器管理列表
*/
@Override
public List<LeasePO> queryList(LeaseDO leaseDO)
{
return leaseMapper.queryList(leaseDO);
}
/**
* 新增容器管理
*/
@Override
public Boolean insert(LeaseDO leaseDO) {
LoginUser loginUser = SecurityUtils.getLoginUser();
Lease lease = new Lease();
BeanUtils.copyProperties(leaseDO,lease);
return this.save(lease);
}
/**
* 修改容器管理
*/
@Override
public Boolean update(LeaseDO leaseDO) {
Lease lease = new Lease();
BeanUtils.copyProperties(leaseDO,lease);
return this.updateById(lease);
}
/**
* 批量删除容器管理
*/
@Override
@Transactional(rollbackFor = Exception.class)
public Boolean delete(Long[] leaseIds ) {
LoginUser loginUser = SecurityUtils.getLoginUser();
List<Lease> list = new ArrayList<>();
for (Long id : leaseIds) {
Lease lease = new Lease();
lease.setId(id);
lease.setDelFlag(2);
lease.setUpdateBy(loginUser.getUserid());
lease.setUpdateByName(loginUser.getUsername());
lease.setUpdateTime(new Date());
list.add(lease);
}
return this.updateBatchById(list);
}
/**
* 修改容器管理
*/
@Override
public LeasePO getInfo(Long leaseId) {
Lease lease = this.getById(leaseId);
LeasePO leasePO = new LeasePO();
BeanUtils.copyProperties(lease,leasePO);
return leasePO;
}
// /**
// * @description 校验唯一
// * @author ZhouGY
// * @date 2024/5/9 21:10
// * @param containerDO
// */
// private void verifyUniqueness(ContainerDO containerDO){
// LoginUser loginUser = SecurityUtils.getLoginUser();
// Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId();
// if (topOrganizationId == null || topOrganizationId == 0 ){
// throw new ServiceException("获取当前登陆人组织失败!");
// }
// int count = leaseMapper.selectCount(new QueryWrapper<Container>().lambda()
// .eq(Container::getTopOrganizationId, topOrganizationId)
// .eq(Container::getContainerCode,containerDO.getContainerCode())
// .eq(Container::getOrganizationId, containerDO.getOrganizationId())
// .ne(containerDO.getContainerId() != null, Container::getContainerId, containerDO.getContainerId() )
// .eq(Container::getDelFlag,1));
// if (count > 0){
// throw new ServiceException("容器编码【" + containerDO.getContainerCode() + "】已存在");
// }
// }
}
@@ -0,0 +1,67 @@
package com.mhd.basic.domain.lease.repository.po;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.mhd.common.core.annotation.Excel;
import com.mhd.common.core.web.domain.BaseVOEntity;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.math.BigDecimal;
import java.util.Date;
/**
* 租赁管理对象 container
*
*/
@Data
public class LeasePO extends BaseVOEntity{
private static final long serialVersionUID = 1L;
@ApiModelProperty("id")
private Long id;
@ApiModelProperty("组织表ID")
@Excel(name = "组织表ID")
private Long organizationId;
@ApiModelProperty("组织名称")
@Excel(name = "组织名称")
private String organizationName;
@ApiModelProperty("一级组织表ID")
@Excel(name = "一级组织表ID")
private Long topOrganizationId;
@ApiModelProperty("仓库ID")
private Long warehouseId;
@ApiModelProperty("仓库名字")
private String warehouseName;
@ApiModelProperty("货主id")
private Long shipperId;
@ApiModelProperty("货主名称")
private String cargoOwnerName;
@ApiModelProperty(value = "租赁方式(整租/散租)")
private String leaseType;
@ApiModelProperty("租赁面积(m²)")
private BigDecimal leaseArea;
@ApiModelProperty("开始日期")
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern="yyyy-MM-dd")
private Date startDate;
@ApiModelProperty("结束日期")
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern="yyyy-MM-dd")
private Date endDate;
@ApiModelProperty("备注")
private String remark;
}
@@ -0,0 +1,82 @@
package com.mhd.basic.domain.lease.repository.todo;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.mhd.common.core.annotation.Excel;
import com.mhd.common.core.web.domain.BaseVOEntity;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
import java.util.Date;
/**
* 租赁管理对象 container
*
*/
@Data
public class LeaseDO extends BaseVOEntity{
private static final long serialVersionUID = 1L;
@ApiModelProperty("id")
private Long id;
@ApiModelProperty("组织表ID")
@Excel(name = "组织表ID")
private Long organizationId;
@ApiModelProperty("组织名称")
@Excel(name = "组织名称")
private String organizationName;
@ApiModelProperty("一级组织表ID")
@Excel(name = "一级组织表ID")
private Long topOrganizationId;
@ApiModelProperty("仓库ID")
private Long warehouseId;
@ApiModelProperty("仓库名字")
private String warehouseName;
@ApiModelProperty("货主id")
private Long shipperId;
@ApiModelProperty("货主名称")
private String cargoOwnerName;
@ApiModelProperty(value = "租赁方式(整租/散租)")
private String leaseType;
@ApiModelProperty("租赁面积(m²)")
private BigDecimal leaseArea;
@ApiModelProperty("开始日期")
@JsonFormat(pattern = "yyyy-MM-dd")
private Date startDate;
@ApiModelProperty("结束日期")
@JsonFormat(pattern = "yyyy-MM-dd")
private Date endDate;
@ApiModelProperty("备注")
private String remark;
@ApiModelProperty("当前时间")
@JsonFormat(pattern = "yyyy-MM-dd")
private Date time;
@ApiModelProperty(name = "创建时间查询条件开始日期")
private String createTimeStart;
@ApiModelProperty(name = "创建时间查询条件结束日期")
private String createTimeEnd;
@ApiModelProperty(name = "修改时间查询条件开始日期")
private String updateTimeStart;
@ApiModelProperty(name = "修改时间查询条件结束日期")
private String updateTimeEnd;
}
@@ -0,0 +1,87 @@
package com.mhd.basic.domain.lease.service;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.mhd.basic.domain.container.entity.Container;
import com.mhd.basic.domain.container.repository.facade.IContainerService;
import com.mhd.basic.domain.container.repository.po.ContainerPO;
import com.mhd.basic.domain.container.repository.todo.ContainerDO;
import com.mhd.basic.domain.lease.entity.Lease;
import com.mhd.basic.domain.lease.repository.facade.ILeaseService;
import com.mhd.basic.domain.lease.repository.po.LeasePO;
import com.mhd.basic.domain.lease.repository.todo.LeaseDO;
import com.mhd.common.security.utils.SecurityUtils;
import com.mhd.system.api.model.LoginUser;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.Date;
import java.util.List;
/**
* 租赁管理
*
*/
@Service
@Slf4j
public class LeaseDomainService {
@Autowired
private ILeaseService leaseService;
/**
* 分页查询租赁管理列表
*/
public List<LeasePO> queryList(LeaseDO leaseDO) {
return leaseService.queryList(leaseDO);
}
/**
* 新增租赁管理
*/
public Boolean insert(LeaseDO leaseDO) {
return leaseService.insert(leaseDO);
}
/**
* 修改租赁管理
*/
public Boolean update(LeaseDO leaseDO) {
return leaseService.update(leaseDO);
}
/**
* 批量删除租赁管理
*/
public Boolean delete(Long[] leaseIds) {
return leaseService.delete(leaseIds);
}
/**
* 获取租赁管理详细信息
*/
public LeasePO getInfo(Long leaseId)
{
return leaseService.getInfo(leaseId);
}
/**
* @description 批量作废租赁
* @author ZhouGY
* @date 2024/5/13 9:46
* @param leaseIds
* @return Boolean
*/
public Boolean nullifyByIds(List<Long> leaseIds) {
LoginUser loginUser = SecurityUtils.getLoginUser();
return leaseService.update(new UpdateWrapper<Lease>().lambda()
.set(Lease::getUpdateBy, loginUser.getUserid())
.set(Lease::getUpdateTime, new Date())
.in(Lease::getId, leaseIds)
.eq(Lease::getDelFlag, 1));
}
}
@@ -158,6 +158,7 @@ public class MaterialBaseInfo extends BaseVOEntity{
@ApiModelProperty("单位数量")
@Excel(name = "单位数量")
@TableField(exist = false)
private BigDecimal unitNumber;
@ApiModelProperty("是否公用: 1-是 2-否")
@@ -184,4 +185,204 @@ public class MaterialBaseInfo extends BaseVOEntity{
@ApiModelProperty("整机编码")
@Excel(name = "整机编号")
private String machineCode;
}
/**
* 商品名称
*/
@ApiModelProperty("商品名称")
@Excel(name = "商品名称")
@TableField(exist = false)
private String commodityName;
/**
* 商品编码
*/
@ApiModelProperty("商品编码")
@Excel(name = "商品编码")
@TableField(exist = false)
private String commodityNo;
/**
* 料号
*/
@ApiModelProperty("料号")
@Excel(name = "料号")
@TableField(exist = false)
private String materialNo;
/**
* 规格型号
*/
@ApiModelProperty("规格型号")
@Excel(name = "规格型号")
@TableField(exist = false)
private String specificationModel;
/**
* Invoice No
*/
@ApiModelProperty("Invoice No")
@Excel(name = "Invoice No")
@TableField(exist = false)
private String invoiceNo;
/**
*
*/
@ApiModelProperty("")
@Excel(name = "")
@TableField(exist = false)
private String liter;
/**
* 尺寸
*/
@ApiModelProperty("尺寸")
@Excel(name = "尺寸")
@TableField(exist = false)
private String size;
/**
* 申报单位
*/
@ApiModelProperty("申报单位")
@Excel(name = "申报单位")
@TableField(exist = false)
private String declareUnit;
/**
* Batch Ref NO's
*/
@ApiModelProperty("Batch Ref NO's")
@Excel(name = "Batch Ref NO's")
@TableField(exist = false)
private String batchRefNo;
/**
* Sheet Ref NO's
*/
@ApiModelProperty("Sheet Ref NO's")
@Excel(name = "Sheet Ref NO's")
@TableField(exist = false)
private String sheetRefNo;
/**
* 原产国
*/
@ApiModelProperty("原产国")
@Excel(name = "原产国")
@TableField(exist = false)
private String countryOfOrigin;
/**
* 箱号/卡板号
*/
@ApiModelProperty("箱号/卡板号")
@Excel(name = "箱号/卡板号")
@TableField(exist = false)
private String casePalletNo;
/**
* 币制
*/
@ApiModelProperty("币制")
@Excel(name = "币制")
private String currency;
/**
* 申报数量
*/
@ApiModelProperty("申报数量")
@Excel(name = "申报数量")
@TableField(exist = false)
private Double declareQuantity;
/**
* 箱数
*/
@ApiModelProperty("箱数")
@Excel(name = "箱数")
@TableField(exist = false)
private Double caseCount;
/**
* 件数
*/
@ApiModelProperty("件数")
@Excel(name = "件数")
@TableField(exist = false)
private Double pieceCount;
/**
* 出库数量
*/
@ApiModelProperty("出库数量")
@Excel(name = "出库数量")
@TableField(exist = false)
private Double outboundQuantity;
/**
* 总净重(KG)
*/
@ApiModelProperty("总净重(KG)")
@Excel(name = "总净重(KG)")
@TableField(exist = false)
private Double totalNetWeight;
/**
* 总毛重(KG)
*/
@ApiModelProperty("总毛重(KG)")
@Excel(name = "总毛重(KG)")
@TableField(exist = false)
private Double totalGrossWeight;
/**
* 总体积(CBM)
*/
@ApiModelProperty("总体积(CBM)")
@Excel(name = "总体积(CBM)")
@TableField(exist = false)
private Double totalVolume;
/**
* 总面积(SQM)
*/
@ApiModelProperty("总面积(SQM)")
@Excel(name = "总面积(SQM)")
@TableField(exist = false)
private Double totalArea;
/**
* 总价
*/
@ApiModelProperty("总价")
@Excel(name = "总价")
@TableField(exist = false)
private Double totalAmount;
/**
* 单位
*/
@ApiModelProperty("单位")
@Excel(name = "单位")
@TableField(exist = false)
private String unit;
@ApiModelProperty("SKU码")
private String skuCode;
@ApiModelProperty("单价")
private BigDecimal unitPrice;
@ApiModelProperty("原产国")
private String originCountry;
@ApiModelProperty("HS码")
private String hsCode;
@ApiModelProperty("申报单位")
private String declarationUnit;
@ApiModelProperty("法定单位")
private String statutoryUnit;
@ApiModelProperty("法定第二单位")
private String statutorySecondUnit;
}
@@ -5,6 +5,7 @@ import com.mhd.basic.domain.batch.repository.po.BatchPO;
import com.mhd.common.core.annotation.Excel;
import com.mhd.common.core.handler.ListTypeHandler;
import com.mhd.common.core.web.domain.BaseVOEntity;
import com.mhd.system.api.domain.*;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@@ -182,4 +183,197 @@ public class MaterialBaseInfoPO extends BaseVOEntity{
@Excel(name = "整机编号")
private String machineCode;
}
/**
* 商品名称
*/
@ApiModelProperty("商品名称")
@Excel(name = "商品名称")
private String commodityName;
/**
* 商品编码
*/
@ApiModelProperty("商品编码")
@Excel(name = "商品编码")
private String commodityNo;
/**
* 料号
*/
@ApiModelProperty("料号")
@Excel(name = "料号")
private String materialNo;
/**
* 规格型号
*/
@ApiModelProperty("规格型号")
@Excel(name = "规格型号")
private String specificationModel;
/**
* Invoice No
*/
@ApiModelProperty("Invoice No")
@Excel(name = "Invoice No")
private String invoiceNo;
/**
*
*/
@ApiModelProperty("")
@Excel(name = "")
private String liter;
/**
* 尺寸
*/
@ApiModelProperty("尺寸")
@Excel(name = "尺寸")
private String size;
/**
* 申报单位
*/
@ApiModelProperty("申报单位")
@Excel(name = "申报单位")
private String declareUnit;
/**
* Batch Ref NOs
*/
@ApiModelProperty("Batch Ref NOs")
@Excel(name = "Batch Ref NOs")
private String batchRefNo;
/**
* Sheet Ref NOs
*/
@ApiModelProperty("Sheet Ref NOs")
@Excel(name = "Sheet Ref NOs")
private String sheetRefNo;
/**
* 原产国
*/
@ApiModelProperty("原产国")
@Excel(name = "原产国")
private String countryOfOrigin;
/**
* 箱号/卡板号
*/
@ApiModelProperty("箱号/卡板号")
@Excel(name = "箱号/卡板号")
private String casePalletNo;
/**
* 币制
*/
@ApiModelProperty("币制")
@Excel(name = "币制")
private String currency;
/**
* 申报数量
*/
@ApiModelProperty("申报数量")
@Excel(name = "申报数量")
private Double declareQuantity;
/**
* 箱数
*/
@ApiModelProperty("箱数")
@Excel(name = "箱数")
private Double caseCount;
/**
* 件数
*/
@ApiModelProperty("件数")
@Excel(name = "件数")
private Double pieceCount;
/**
* 出库数量
*/
@ApiModelProperty("出库数量")
@Excel(name = "出库数量")
private Double outboundQuantity;
/**
* 总净重(KG)
*/
@ApiModelProperty("总净重(KG)")
@Excel(name = "总净重(KG)")
private Double totalNetWeight;
/**
* 总毛重(KG)
*/
@ApiModelProperty("总毛重(KG)")
@Excel(name = "总毛重(KG)")
private Double totalGrossWeight;
/**
* 总体积(CBM)
*/
@ApiModelProperty("总体积(CBM)")
@Excel(name = "总体积(CBM)")
private Double totalVolume;
/**
* 总面积(SQM)
*/
@ApiModelProperty("总面积(SQM)")
@Excel(name = "总面积(SQM)")
private Double totalArea;
/**
* 总价
*/
@ApiModelProperty("总价")
@Excel(name = "总价")
private Double totalAmount;
/**
* 单位
*/
@ApiModelProperty("单位")
@Excel(name = "单位")
private String unit;
@ApiModelProperty("SKU码")
private String skuCode;
@ApiModelProperty("单价")
private BigDecimal unitPrice;
@ApiModelProperty("原产国")
private String originCountry;
@ApiModelProperty("HS码")
private String hsCode;
@ApiModelProperty("申报单位")
private String declarationUnit;
@ApiModelProperty("法定单位")
private String statutoryUnit;
@ApiModelProperty("法定第二单位")
private String statutorySecondUnit;
@ApiModelProperty("商品规则")
private MaterialGoodsRuleFeign materialGoodsRule;
@ApiModelProperty("公共信息")
private MaterialCommonFeign materialCommon;
@ApiModelProperty("仓库控制信息")
private MaterialWarehouseControlFeign materialWarehouseControl;
@ApiModelProperty("库存预警信息")
private List<MaterialInventoryWarningFeign> materialInventoryWarningList;
@ApiModelProperty("条码信息")
private List<MaterialBarCodeFeign> materialBarCodeList;
}
@@ -203,4 +203,182 @@ public class MaterialBaseInfoDO extends BaseVOEntity{
@ApiModelProperty("整机编码")
@Excel(name = "整机编号")
private String machineCode;
}
/**
* 商品名称
*/
@ApiModelProperty("商品名称")
@Excel(name = "商品名称")
private String commodityName;
/**
* 商品编码
*/
@ApiModelProperty("商品编码")
@Excel(name = "商品编码")
private String commodityNo;
/**
* 料号
*/
@ApiModelProperty("料号")
@Excel(name = "料号")
private String materialNo;
/**
* 规格型号
*/
@ApiModelProperty("规格型号")
@Excel(name = "规格型号")
private String specificationModel;
/**
* Invoice No
*/
@ApiModelProperty("Invoice No")
@Excel(name = "Invoice No")
private String invoiceNo;
/**
*
*/
@ApiModelProperty("")
@Excel(name = "")
private String liter;
/**
* 尺寸
*/
@ApiModelProperty("尺寸")
@Excel(name = "尺寸")
private String size;
/**
* 申报单位
*/
@ApiModelProperty("申报单位")
@Excel(name = "申报单位")
private String declareUnit;
/**
* Batch Ref NOs
*/
@ApiModelProperty("Batch Ref NOs")
@Excel(name = "Batch Ref NOs")
private String batchRefNo;
/**
* Sheet Ref NOs
*/
@ApiModelProperty("Sheet Ref NOs")
@Excel(name = "Sheet Ref NOs")
private String sheetRefNo;
/**
* 原产国
*/
@ApiModelProperty("原产国")
@Excel(name = "原产国")
private String countryOfOrigin;
/**
* 箱号/卡板号
*/
@ApiModelProperty("箱号/卡板号")
@Excel(name = "箱号/卡板号")
private String casePalletNo;
/**
* 币制
*/
@ApiModelProperty("币制")
@Excel(name = "币制")
private String currency;
/**
* 申报数量
*/
@ApiModelProperty("申报数量")
@Excel(name = "申报数量")
private Double declareQuantity;
/**
* 箱数
*/
@ApiModelProperty("箱数")
@Excel(name = "箱数")
private Double caseCount;
/**
* 件数
*/
@ApiModelProperty("件数")
@Excel(name = "件数")
private Double pieceCount;
/**
* 出库数量
*/
@ApiModelProperty("出库数量")
@Excel(name = "出库数量")
private Double outboundQuantity;
/**
* 总净重(KG)
*/
@ApiModelProperty("总净重(KG)")
@Excel(name = "总净重(KG)")
private Double totalNetWeight;
/**
* 总毛重(KG)
*/
@ApiModelProperty("总毛重(KG)")
@Excel(name = "总毛重(KG)")
private Double totalGrossWeight;
/**
* 总体积(CBM)
*/
@ApiModelProperty("总体积(CBM)")
@Excel(name = "总体积(CBM)")
private Double totalVolume;
/**
* 总面积(SQM)
*/
@ApiModelProperty("总面积(SQM)")
@Excel(name = "总面积(SQM)")
private Double totalArea;
/**
* 总价
*/
@ApiModelProperty("总价")
@Excel(name = "总价")
private Double totalAmount;
/**
* 单位
*/
@ApiModelProperty("单位")
@Excel(name = "单位")
private String unit;
@ApiModelProperty("SKU码")
private String skuCode;
@ApiModelProperty("单价")
private BigDecimal unitPrice;
@ApiModelProperty("原产国")
private String originCountry;
@ApiModelProperty("HS码")
private String hsCode;
@ApiModelProperty("申报单位")
private String declarationUnit;
@ApiModelProperty("法定单位")
private String statutoryUnit;
@ApiModelProperty("法定第二单位")
private String statutorySecondUnit;
}
@@ -68,6 +68,10 @@ public class PackPO extends BaseVOEntity{
@Excel(name = "是否作废: 1-否 2-是")
private Integer nullify;
@ApiModelProperty("包装单位(取第一条包装详情的单位名称)")
@Excel(name = "包装单位")
private String unitName;
@ApiModelProperty("包装明细")
private List<PackDetailPO> packDetailList;
@@ -22,7 +22,7 @@ public interface IServiceItemsManageService extends IService<ServiceItemsManage>
/**
* 查询费用类别
*/
public List<ServiceItemsManagePO> getCostType();
public List<ServiceItemsManagePO> getCostType(ServiceItemsManageDO serviceItemsManageDO);
/**
* 新增服务项管理
*/
@@ -21,6 +21,6 @@ public interface ServiceItemsManageMapper extends BaseMapper<ServiceItemsManage>
/**
* 查询费用类别
*/
public List<ServiceItemsManagePO> selectServiceTypes();
public List<ServiceItemsManagePO> selectServiceTypes(ServiceItemsManageDO serviceItemsManageDO);
}
@@ -6,6 +6,7 @@ import com.mhd.basic.domain.serviceItemsManage.entity.ServiceItemsManage;
import com.mhd.basic.domain.serviceItemsManage.repository.facade.IServiceItemsManageService;
import com.mhd.basic.domain.serviceItemsManage.repository.po.ServiceItemsManagePO;
import com.mhd.basic.domain.serviceItemsManage.repository.todo.ServiceItemsManageDO;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@@ -19,6 +20,7 @@ import java.util.List;
* @author gen
* @date 2024-06-03
*/
@Slf4j
@Service
public class ServiceItemsManageImpl extends ServiceImpl<ServiceItemsManageMapper, ServiceItemsManage> implements IServiceItemsManageService{
@Autowired
@@ -30,12 +32,80 @@ public class ServiceItemsManageImpl extends ServiceImpl<ServiceItemsManageMapper
@Override
public List<ServiceItemsManagePO> queryList(ServiceItemsManageDO serviceItemsManageDO)
{
return serviceItemsManageMapper.queryList(serviceItemsManageDO);
// 添加日志记录查询参数
log.info("ServiceItemsManageImpl.queryList 查询参数:topOrganizationId={}, organizationId={}, serviceItemsName={}, serviceItemsCode={}",
serviceItemsManageDO.getTopOrganizationId(),
serviceItemsManageDO.getOrganizationId(),
serviceItemsManageDO.getServiceItemsName(),
serviceItemsManageDO.getServiceItemsCode());
// 构建SQL查询条件说明用于日志必须与 MyBatis XML 中的条件保持一致
StringBuilder sqlCondition = new StringBuilder("WHERE del_flag = 1");
// 组织过滤条件 XML 中的 <if test="organizationId != null"> <if test="topOrganizationId != null and organizationId == null"> 对应
if (serviceItemsManageDO.getOrganizationId() != null) {
// 如果设置了 organizationId添加 organization_id 条件
sqlCondition.append(" AND organization_id = ").append(serviceItemsManageDO.getOrganizationId());
sqlCondition.append(" AND organization_name IS NOT NULL");
sqlCondition.append(" AND organization_name != ''");
sqlCondition.append(" AND LENGTH(TRIM(organization_name)) > 0");
} else if (serviceItemsManageDO.getTopOrganizationId() != null) {
// 如果设置了 topOrganizationId 但没有设置 organizationId添加 top_organization_id 条件
sqlCondition.append(" AND top_organization_id = ").append(serviceItemsManageDO.getTopOrganizationId());
sqlCondition.append(" AND organization_name IS NOT NULL");
sqlCondition.append(" AND organization_name != ''");
sqlCondition.append(" AND LENGTH(TRIM(organization_name)) > 0");
} else {
// 如果 organizationId topOrganizationId 都为 null不添加组织过滤条件查询所有组织的数据
sqlCondition.append(" (无组织过滤条件,查询所有组织的数据)");
}
// 其他查询条件
if (serviceItemsManageDO.getCreateByName() != null && !serviceItemsManageDO.getCreateByName().isEmpty()) {
sqlCondition.append(" AND create_by_name LIKE '%").append(serviceItemsManageDO.getCreateByName()).append("%'");
}
if (serviceItemsManageDO.getUpdateByName() != null && !serviceItemsManageDO.getUpdateByName().isEmpty()) {
sqlCondition.append(" AND update_by_name LIKE '%").append(serviceItemsManageDO.getUpdateByName()).append("%'");
}
if (serviceItemsManageDO.getOrganizationName() != null && !serviceItemsManageDO.getOrganizationName().isEmpty()) {
sqlCondition.append(" AND organization_name LIKE '%").append(serviceItemsManageDO.getOrganizationName()).append("%'");
}
if (serviceItemsManageDO.getServiceItemsName() != null && !serviceItemsManageDO.getServiceItemsName().isEmpty()) {
sqlCondition.append(" AND service_items_name LIKE '%").append(serviceItemsManageDO.getServiceItemsName()).append("%'");
}
if (serviceItemsManageDO.getServiceItemsCode() != null && !serviceItemsManageDO.getServiceItemsCode().isEmpty()) {
sqlCondition.append(" AND service_items_code = '").append(serviceItemsManageDO.getServiceItemsCode()).append("'");
}
if (serviceItemsManageDO.getTaxRate() != null) {
sqlCondition.append(" AND tax_rate = ").append(serviceItemsManageDO.getTaxRate());
}
if (serviceItemsManageDO.getRemark() != null && !serviceItemsManageDO.getRemark().isEmpty()) {
sqlCondition.append(" AND remark LIKE '%").append(serviceItemsManageDO.getRemark()).append("%'");
}
log.info("ServiceItemsManageImpl.queryList 生成的SQL条件(预估):SELECT * FROM service_items_manage {}", sqlCondition.toString());
log.info("ServiceItemsManageImpl.queryList 实际执行的SQL请查看 MyBatis 日志,参数:organizationId={}, topOrganizationId={}, delFlag={}",
serviceItemsManageDO.getOrganizationId(), serviceItemsManageDO.getTopOrganizationId(), serviceItemsManageDO.getDelFlag());
List<ServiceItemsManagePO> result = serviceItemsManageMapper.queryList(serviceItemsManageDO);
log.info("ServiceItemsManageImpl.queryList 查询结果:{} 条", result != null ? result.size() : 0);
// 记录查询结果中的组织ID分布
if (result != null && !result.isEmpty()) {
StringBuilder orgIds = new StringBuilder();
for (ServiceItemsManagePO po : result) {
if (orgIds.length() > 0) {
orgIds.append(", ");
}
orgIds.append(po.getOrganizationId());
}
log.info("查询结果中的组织ID分布:{}", orgIds.toString());
}
return result;
}
@Override
public List<ServiceItemsManagePO> getCostType() {
return serviceItemsManageMapper.selectServiceTypes();
public List<ServiceItemsManagePO> getCostType(ServiceItemsManageDO serviceItemsManageDO) {
return serviceItemsManageMapper.selectServiceTypes(serviceItemsManageDO);
}
/**
* 新增服务项管理
@@ -37,7 +37,7 @@ public class ServiceItemsManageDomainService {
* 查询费用类型
*/
public List<ServiceItemsManagePO> getCostsType(ServiceItemsManageDO serviceItemsManageDO){
return serviceItemsManageService.getCostType();
return serviceItemsManageService.getCostType(serviceItemsManageDO);
}
@@ -0,0 +1,65 @@
package com.mhd.basic.domain.shipperLeaseDetails.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.mhd.common.core.annotation.Excel;
import com.mhd.common.core.web.domain.BaseVOEntity;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.math.BigDecimal;
import java.util.Date;
/**
* 货主租赁明细
*
*/
@Data
public class ShipperLeaseDetails extends BaseVOEntity{
private static final long serialVersionUID = 1L;
@ApiModelProperty("id")
@TableId(type = IdType.AUTO)
private Long id;
@ApiModelProperty("组织表ID")
@Excel(name = "组织表ID")
private Long organizationId;
@ApiModelProperty("组织名称")
@Excel(name = "组织名称")
private String organizationName;
@ApiModelProperty("一级组织表ID")
@Excel(name = "一级组织表ID")
private Long topOrganizationId;
@ApiModelProperty("仓库ID")
private Long warehouseId;
@ApiModelProperty("仓库名字")
private String warehouseName;
@ApiModelProperty("货主id")
private Long shipperId;
@ApiModelProperty("货主名称")
private String cargoOwnerName;
@ApiModelProperty(value = "租赁方式(整租/散租)")
private String leaseType;
@ApiModelProperty("租赁面积(m²)")
private BigDecimal leaseArea;
@ApiModelProperty("业务日期")
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern="yyyy-MM-dd")
private Date businessDate;
}
@@ -0,0 +1,58 @@
package com.mhd.basic.domain.shipperLeaseDetails.entity;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.mhd.common.core.annotation.Excel;
import com.mhd.common.core.web.domain.BaseVOEntity;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.math.BigDecimal;
import java.util.Date;
/**
* 仓库出租率返回类 没有表
*
*/
@Data
public class WarehouseOccupancyRate extends BaseVOEntity{
private static final long serialVersionUID = 1L;
@ApiModelProperty("组织表ID")
@Excel(name = "组织表ID")
private Long organizationId;
@ApiModelProperty("组织名称")
@Excel(name = "组织名称")
private String organizationName;
@ApiModelProperty("一级组织表ID")
@Excel(name = "一级组织表ID")
private Long topOrganizationId;
@ApiModelProperty("仓库ID")
private Long warehouseId;
@ApiModelProperty("仓库名字")
private String warehouseName;
@ApiModelProperty("业务日期")
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern="yyyy-MM-dd")
private Date businessDate;
@ApiModelProperty("整租面积(m²)")
private BigDecimal entireLeaseArea;
@ApiModelProperty("散租面积(m²)")
private BigDecimal fractionalLeaseArea;
@ApiModelProperty("总面积(m²)")
private BigDecimal totalArea;
@ApiModelProperty("日租率(%)")
private BigDecimal dailyRentalRate;
}
@@ -0,0 +1,43 @@
package com.mhd.basic.domain.shipperLeaseDetails.repository.facade;
import com.baomidou.mybatisplus.extension.service.IService;
import com.mhd.basic.domain.shipperLeaseDetails.entity.ShipperLeaseDetails;
import com.mhd.basic.domain.shipperLeaseDetails.repository.po.ShipperLeaseDetailsPO;
import com.mhd.basic.domain.shipperLeaseDetails.repository.todo.ShipperLeaseDetailsDO;
import java.util.List;
/**
* 货主租赁明细Service接口
*
* @author gen
* @date 2024-05-07
*/
public interface IShipperLeaseDetailsService extends IService<ShipperLeaseDetails>
{
/**
* 分页查询货主租赁明细列表
*/
public List<ShipperLeaseDetailsPO> queryList(ShipperLeaseDetailsDO shipperLeaseDetailsDO);
/**
* 新增货主租赁明细
*/
public Boolean insert(ShipperLeaseDetailsDO shipperLeaseDetailsDO);
/**
* 修改货主租赁明细
*/
public Boolean update(ShipperLeaseDetailsDO shipperLeaseDetailsDO);
/**
* 批量删除货主租赁明细
*/
public Boolean delete(Long[] leaseIds);
/**
* 查询货主租赁明细
*/
public ShipperLeaseDetailsPO getInfo(Long leaseId);
}
@@ -0,0 +1,21 @@
package com.mhd.basic.domain.shipperLeaseDetails.repository.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.mhd.basic.domain.shipperLeaseDetails.entity.ShipperLeaseDetails;
import com.mhd.basic.domain.shipperLeaseDetails.repository.po.ShipperLeaseDetailsPO;
import com.mhd.basic.domain.shipperLeaseDetails.repository.todo.ShipperLeaseDetailsDO;
import java.util.List;
/**
* 货主租赁明细Mapper接口
*
*/
public interface ShipperLeaseDetailsMapper extends BaseMapper<ShipperLeaseDetails>
{
/**
* 查询货主租赁明细列表
*/
public List<ShipperLeaseDetailsPO> queryList(ShipperLeaseDetailsDO shipperLeaseDetailsDO);
}
@@ -0,0 +1,114 @@
package com.mhd.basic.domain.shipperLeaseDetails.repository.persistence;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.mhd.basic.domain.shipperLeaseDetails.entity.ShipperLeaseDetails;
import com.mhd.basic.domain.shipperLeaseDetails.repository.facade.IShipperLeaseDetailsService;
import com.mhd.basic.domain.shipperLeaseDetails.repository.mapper.ShipperLeaseDetailsMapper;
import com.mhd.basic.domain.shipperLeaseDetails.repository.po.ShipperLeaseDetailsPO;
import com.mhd.basic.domain.shipperLeaseDetails.repository.todo.ShipperLeaseDetailsDO;
import com.mhd.common.security.utils.SecurityUtils;
import com.mhd.system.api.model.LoginUser;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
/**
* 货主租赁明细Service业务层处理
*
* @author gen
* @date 2024-05-07
*/
@Service
public class ShipperLeaseDetailsImpl extends ServiceImpl<ShipperLeaseDetailsMapper, ShipperLeaseDetails> implements IShipperLeaseDetailsService {
@Autowired
private ShipperLeaseDetailsMapper shipperLeaseDetailsMapper;
/**
* 查询货主租赁明细列表
*/
@Override
public List<ShipperLeaseDetailsPO> queryList(ShipperLeaseDetailsDO shipperLeaseDetailsDO)
{
return shipperLeaseDetailsMapper.queryList(shipperLeaseDetailsDO);
}
/**
* 新增货主租赁明细
*/
@Override
public Boolean insert(ShipperLeaseDetailsDO shipperLeaseDetailsDO) {
LoginUser loginUser = SecurityUtils.getLoginUser();
ShipperLeaseDetails shipperLeaseDetails = new ShipperLeaseDetails();
BeanUtils.copyProperties(shipperLeaseDetailsDO,shipperLeaseDetails);
return this.save(shipperLeaseDetails);
}
/**
* 修改货主租赁明细
*/
@Override
public Boolean update(ShipperLeaseDetailsDO shipperLeaseDetailsDO) {
ShipperLeaseDetails shipperLeaseDetails = new ShipperLeaseDetails();
BeanUtils.copyProperties(shipperLeaseDetailsDO,shipperLeaseDetails);
return this.updateById(shipperLeaseDetails);
}
/**
* 批量删除货主租赁明细
*/
@Override
@Transactional(rollbackFor = Exception.class)
public Boolean delete(Long[] leaseIds ) {
LoginUser loginUser = SecurityUtils.getLoginUser();
List<ShipperLeaseDetails> list = new ArrayList<>();
for (Long id : leaseIds) {
ShipperLeaseDetails shipperLeaseDetails = new ShipperLeaseDetails();
shipperLeaseDetails.setId(id);
shipperLeaseDetails.setDelFlag(2);
shipperLeaseDetails.setUpdateBy(loginUser.getUserid());
shipperLeaseDetails.setUpdateByName(loginUser.getUsername());
shipperLeaseDetails.setUpdateTime(new Date());
list.add(shipperLeaseDetails);
}
return this.updateBatchById(list);
}
/**
* 修改货主租赁明细
*/
@Override
public ShipperLeaseDetailsPO getInfo(Long ShipperLeaseDetailsId) {
ShipperLeaseDetails shipperLeaseDetails = this.getById(ShipperLeaseDetailsId);
ShipperLeaseDetailsPO shipperLeaseDetailsPO = new ShipperLeaseDetailsPO();
BeanUtils.copyProperties(shipperLeaseDetails,shipperLeaseDetailsPO);
return shipperLeaseDetailsPO;
}
// /**
// * @description 校验唯一
// * @author ZhouGY
// * @date 2024/5/9 21:10
// * @param containerDO
// */
// private void verifyUniqueness(ContainerDO containerDO){
// LoginUser loginUser = SecurityUtils.getLoginUser();
// Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId();
// if (topOrganizationId == null || topOrganizationId == 0 ){
// throw new ServiceException("获取当前登陆人组织失败!");
// }
// int count = leaseMapper.selectCount(new QueryWrapper<Container>().lambda()
// .eq(Container::getTopOrganizationId, topOrganizationId)
// .eq(Container::getContainerCode,containerDO.getContainerCode())
// .eq(Container::getOrganizationId, containerDO.getOrganizationId())
// .ne(containerDO.getContainerId() != null, Container::getContainerId, containerDO.getContainerId() )
// .eq(Container::getDelFlag,1));
// if (count > 0){
// throw new ServiceException("容器编码【" + containerDO.getContainerCode() + "】已存在");
// }
// }
}
@@ -0,0 +1,65 @@
package com.mhd.basic.domain.shipperLeaseDetails.repository.po;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.mhd.common.core.annotation.Excel;
import com.mhd.common.core.web.domain.BaseVOEntity;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.math.BigDecimal;
import java.util.Date;
/**
* 货主租赁明细
*
*/
@Data
public class ShipperLeaseDetailsPO extends BaseVOEntity{
private static final long serialVersionUID = 1L;
@ApiModelProperty("id")
@TableId(type = IdType.AUTO)
private Long id;
@ApiModelProperty("组织表ID")
@Excel(name = "组织表ID")
private Long organizationId;
@ApiModelProperty("组织名称")
@Excel(name = "组织名称")
private String organizationName;
@ApiModelProperty("一级组织表ID")
@Excel(name = "一级组织表ID")
private Long topOrganizationId;
@ApiModelProperty("仓库ID")
private Long warehouseId;
@ApiModelProperty("仓库名字")
private String warehouseName;
@ApiModelProperty("货主id")
private Long shipperId;
@ApiModelProperty("货主名称")
private String cargoOwnerName;
@ApiModelProperty(value = "租赁方式(整租/散租)")
private String leaseType;
@ApiModelProperty("租赁面积(m²)")
private BigDecimal leaseArea;
@ApiModelProperty("业务日期")
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern="yyyy-MM-dd")
private Date businessDate;
}
@@ -0,0 +1,73 @@
package com.mhd.basic.domain.shipperLeaseDetails.repository.todo;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.mhd.common.core.annotation.Excel;
import com.mhd.common.core.web.domain.BaseVOEntity;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.math.BigDecimal;
import java.util.Date;
/**
* 货主租赁明细
*
*/
@Data
public class ShipperLeaseDetailsDO extends BaseVOEntity{
private static final long serialVersionUID = 1L;
@ApiModelProperty("id")
@TableId(type = IdType.AUTO)
private Long id;
@ApiModelProperty("组织表ID")
@Excel(name = "组织表ID")
private Long organizationId;
@ApiModelProperty("组织名称")
@Excel(name = "组织名称")
private String organizationName;
@ApiModelProperty("一级组织表ID")
@Excel(name = "一级组织表ID")
private Long topOrganizationId;
@ApiModelProperty("仓库ID")
private Long warehouseId;
@ApiModelProperty("仓库名字")
private String warehouseName;
@ApiModelProperty("货主id")
private Long shipperId;
@ApiModelProperty("货主名称")
private String cargoOwnerName;
@ApiModelProperty(value = "租赁方式(整租/散租)")
private String leaseType;
@ApiModelProperty("租赁面积(m²)")
private BigDecimal leaseArea;
@ApiModelProperty("业务日期")
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern="yyyy-MM-dd")
private Date businessDate;
@ApiModelProperty("业务日期开始时间")
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern="yyyy-MM-dd")
private Date businessDateStart;
@ApiModelProperty("业务日期结束时间")
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern="yyyy-MM-dd")
private Date businessDateEnd;
}
@@ -0,0 +1,87 @@
package com.mhd.basic.domain.shipperLeaseDetails.service;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.mhd.basic.domain.lease.entity.Lease;
import com.mhd.basic.domain.lease.repository.facade.ILeaseService;
import com.mhd.basic.domain.lease.repository.po.LeasePO;
import com.mhd.basic.domain.lease.repository.todo.LeaseDO;
import com.mhd.basic.domain.shipperLeaseDetails.entity.ShipperLeaseDetails;
import com.mhd.basic.domain.shipperLeaseDetails.repository.facade.IShipperLeaseDetailsService;
import com.mhd.basic.domain.shipperLeaseDetails.repository.po.ShipperLeaseDetailsPO;
import com.mhd.basic.domain.shipperLeaseDetails.repository.todo.ShipperLeaseDetailsDO;
import com.mhd.common.security.utils.SecurityUtils;
import com.mhd.system.api.model.LoginUser;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.Date;
import java.util.List;
/**
* 租赁管理
*
*/
@Service
@Slf4j
public class ShipperLeaseDetailsDomainService {
@Autowired
private IShipperLeaseDetailsService shipperLeaseDetailsService;
/**
* 分页查询租赁管理列表
*/
public List<ShipperLeaseDetailsPO> queryList(ShipperLeaseDetailsDO shipperLeaseDetailsDO) {
return shipperLeaseDetailsService.queryList(shipperLeaseDetailsDO);
}
/**
* 新增租赁管理
*/
public Boolean insert(ShipperLeaseDetailsDO shipperLeaseDetailsDO) {
return shipperLeaseDetailsService.insert(shipperLeaseDetailsDO);
}
/**
* 修改租赁管理
*/
public Boolean update(ShipperLeaseDetailsDO shipperLeaseDetailsDO) {
return shipperLeaseDetailsService.update(shipperLeaseDetailsDO);
}
/**
* 批量删除租赁管理
*/
public Boolean delete(Long[] shipperLeaseDetailsIds) {
return shipperLeaseDetailsService.delete(shipperLeaseDetailsIds);
}
/**
* 获取租赁管理详细信息
*/
public ShipperLeaseDetailsPO getInfo(Long shipperLeaseDetailsId)
{
return shipperLeaseDetailsService.getInfo(shipperLeaseDetailsId);
}
/**
* @description 批量作废租赁
* @author ZhouGY
* @date 2024/5/13 9:46
* @param leaseIds
* @return Boolean
*/
public Boolean nullifyByIds(List<Long> leaseIds) {
LoginUser loginUser = SecurityUtils.getLoginUser();
return shipperLeaseDetailsService.update(new UpdateWrapper<ShipperLeaseDetails>().lambda()
.set(ShipperLeaseDetails::getUpdateBy, loginUser.getUserid())
.set(ShipperLeaseDetails::getUpdateTime, new Date())
.in(ShipperLeaseDetails::getId, leaseIds)
.eq(ShipperLeaseDetails::getDelFlag, 1));
}
}
@@ -27,8 +27,10 @@ public class ExpenseAccountAssembler {
*/
public ExpenseAccountDO toDO(ExpenseAccountDTO expenseAccountDTO) {
ExpenseAccountDO expenseAccountDO = new ExpenseAccountDO();
// 拷贝
BeanUtils.copyProperties(expenseAccountDTO, expenseAccountDO, IgnoreNullUtil.getNullPropertyNames(expenseAccountDTO));
// 如果 expenseAccountDTO 不为 null才进行拷贝
if (expenseAccountDTO != null) {
BeanUtils.copyProperties(expenseAccountDTO, expenseAccountDO, IgnoreNullUtil.getNullPropertyNames(expenseAccountDTO));
}
LoginUser loginUser = SecurityUtils.getLoginUser();
if (ObjectUtil.isNull(loginUser)) {
throw new DigitalLogisticsException(UserError.TIMEOUT);
@@ -36,28 +38,45 @@ public class ExpenseAccountAssembler {
String userName = loginUser.getUsername();
// 获取登录人id
Long userId = loginUser.getUserid();
if(expenseAccountDTO.getExpenseAccountId() != null){
// 只有在新增或编辑操作时才设置 createByName updateByName
// 查询列表时不应该自动设置这些字段否则会导致 SQL 中添加过滤条件影响查询结果
if(expenseAccountDTO != null && expenseAccountDTO.getExpenseAccountId() != null){
// 编辑操作只设置更新相关字段
if(userId != null){
expenseAccountDO.setUpdateBy(userId);
}else {
expenseAccountDO.setUpdateBy(new Long("0"));
}
expenseAccountDO.setUpdateByName(userName);
expenseAccountDO.setUpdateTime(new Date());
}else {
if(userId != null){
expenseAccountDO.setCreateBy(userId);
expenseAccountDO.setUpdateBy(userId);
}else {
expenseAccountDO.setCreateBy(new Long("0"));
expenseAccountDO.setUpdateBy(new Long("0"));
// 只有在 DTO 中没有传递 updateByName 时才设置避免覆盖前端传递的值
if(expenseAccountDO.getUpdateByName() == null || expenseAccountDO.getUpdateByName().isEmpty()){
expenseAccountDO.setUpdateByName(userName);
}
expenseAccountDO.setCreateByName(userName);
expenseAccountDO.setUpdateByName(userName);
expenseAccountDO.setCreateTime(new Date());
expenseAccountDO.setUpdateTime(new Date());
expenseAccountDO.setDelFlag(1);
} else if(expenseAccountDTO != null && expenseAccountDTO.getExpenseAccountId() == null) {
// expenseAccountId == null可能是查询操作或新增操作
// 如果前端传递了 createByName updateByName说明是查询条件不应该设置已经在 BeanUtils.copyProperties 中拷贝了
// 如果前端没有传递 createByName updateByName可能是新增操作需要设置默认值
boolean hasQueryCondition = (expenseAccountDTO.getCreateByName() != null && !expenseAccountDTO.getCreateByName().isEmpty())
|| (expenseAccountDTO.getUpdateByName() != null && !expenseAccountDTO.getUpdateByName().isEmpty());
if(!hasQueryCondition) {
// 没有查询条件可能是新增操作设置默认值
if(userId != null){
expenseAccountDO.setCreateBy(userId);
expenseAccountDO.setUpdateBy(userId);
}else {
expenseAccountDO.setCreateBy(new Long("0"));
expenseAccountDO.setUpdateBy(new Long("0"));
}
expenseAccountDO.setCreateByName(userName);
expenseAccountDO.setUpdateByName(userName);
expenseAccountDO.setCreateTime(new Date());
expenseAccountDO.setUpdateTime(new Date());
expenseAccountDO.setDelFlag(1);
}
// 如果有查询条件createByName updateByName说明是查询操作不应该设置这些字段
// 字段值已经在 BeanUtils.copyProperties 中从 DTO 拷贝过来了
}
return expenseAccountDO;
}
@@ -0,0 +1,116 @@
package com.mhd.basic.interfaces.assember.lease;
import cn.hutool.core.util.ObjectUtil;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson2.JSON;
import com.mhd.basic.domain.container.repository.todo.ContainerDO;
import com.mhd.basic.domain.lease.repository.todo.LeaseDO;
import com.mhd.basic.interfaces.dto.container.ContainerDTO;
import com.mhd.basic.interfaces.dto.lease.LeaseDTO;
import com.mhd.common.core.exception.ServiceException;
import com.mhd.common.core.exception.digitalLogisticsException.DigitalLogisticsException;
import com.mhd.common.core.exception.digitalLogisticsException.UserError;
import com.mhd.common.core.utils.IgnoreNullUtil;
import com.mhd.common.core.utils.bean.BeanUtils;
import com.mhd.common.core.web.domain.AjaxResult;
import com.mhd.common.security.utils.SecurityUtils;
import com.mhd.system.api.SystemServiceFeign;
import com.mhd.system.api.domain.WarehouseFeignPO;
import com.mhd.system.api.model.LoginUser;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.Date;
/**
* 容器管理Assembler
*
*/
@Component
public class LeaseAssembler {
@Autowired
private SystemServiceFeign systemServiceFeign;
/**
* 转换实体
*/
public LeaseDO toDO(LeaseDTO leaseDTO) {
LeaseDO leaseDO = new LeaseDO();
// 拷贝
BeanUtils.copyProperties(leaseDTO, leaseDO, IgnoreNullUtil.getNullPropertyNames(leaseDTO));
// 确保查询条件字段被正确传递查询条件字段需要明确传递避免被IgnoreNullUtil忽略
leaseDO.setCreateTimeStart(leaseDTO.getCreateTimeStart());
leaseDO.setCreateTimeEnd(leaseDTO.getCreateTimeEnd());
leaseDO.setUpdateTimeStart(leaseDTO.getUpdateTimeStart());
leaseDO.setUpdateTimeEnd(leaseDTO.getUpdateTimeEnd());
return leaseDO;
}
/**
* 转换实体
*/
public LeaseDO toDOByEdit(LeaseDTO leaseDTO) {
LeaseDO leaseDO = new LeaseDO();
// 拷贝
BeanUtils.copyProperties(leaseDTO, leaseDO, IgnoreNullUtil.getNullPropertyNames(leaseDTO));
LoginUser loginUser = SecurityUtils.getLoginUser();
if (ObjectUtil.isNull(loginUser)) {
throw new DigitalLogisticsException(UserError.TIMEOUT);
}
if(leaseDTO.getId() != null){
leaseDO.setUpdateBy(loginUser.getUserid());
leaseDO.setUpdateByName(loginUser.getUsername());
leaseDO.setUpdateTime(new Date());
}else {
leaseDO.setOrganizationId(loginUser.getUserPo().getOrganizationId());
leaseDO.setOrganizationName(loginUser.getUserPo().getOrganizationName());
leaseDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId());
leaseDO.setCreateBy(loginUser.getUserid());
leaseDO.setCreateByName(loginUser.getUsername());
leaseDO.setCreateTime(new Date());
// 新增时根据仓库ID查询仓库名字
if (leaseDO.getWarehouseId() != null) {
setWarehouseInfo(leaseDO);
}
}
return leaseDO;
}
/**
* 设置仓库信息
*/
private void setWarehouseInfo(LeaseDO leaseDO) {
if (leaseDO.getWarehouseId() == null) {
return;
}
AjaxResult ajaxResult = systemServiceFeign.getWarehouseInfoByWarehouseId(leaseDO.getWarehouseId());
if (ajaxResult == null) {
throw new ServiceException("获取仓库信息失败:返回结果为空,仓库ID:" + leaseDO.getWarehouseId());
}
Object codeObj = ajaxResult.get("code");
if (codeObj == null || !"200".equals(String.valueOf(codeObj))) {
String errorMsg = ajaxResult.get("msg") != null ? String.valueOf(ajaxResult.get("msg")) : "未知错误";
throw new ServiceException("获取仓库信息失败,仓库ID" + leaseDO.getWarehouseId() + ",错误信息:" + errorMsg);
}
Object dataObj = ajaxResult.get("data");
if (dataObj == null) {
throw new ServiceException("获取仓库信息失败:返回数据为空,仓库ID:" + leaseDO.getWarehouseId());
}
String dataJsonString = JSONObject.toJSONString(dataObj);
if (dataJsonString == null || dataJsonString.isEmpty() || "null".equals(dataJsonString)) {
throw new ServiceException("获取仓库信息失败:返回数据为空或格式不正确,仓库ID:" + leaseDO.getWarehouseId());
}
WarehouseFeignPO warehouseFeignPO;
try {
warehouseFeignPO = JSON.parseObject(dataJsonString, WarehouseFeignPO.class);
} catch (Exception e) {
throw new ServiceException("获取仓库信息失败:数据解析异常,仓库ID:" + leaseDO.getWarehouseId() + ",错误信息:" + e.getMessage());
}
if (warehouseFeignPO == null) {
throw new ServiceException("获取仓库信息失败:数据解析失败,仓库ID:" + leaseDO.getWarehouseId());
}
leaseDO.setWarehouseName(warehouseFeignPO.getWarehouseName());
}
}
@@ -27,8 +27,10 @@ public class ServiceItemsManageAssembler {
*/
public ServiceItemsManageDO toDO(ServiceItemsManageDTO serviceItemsManageDTO) {
ServiceItemsManageDO serviceItemsManageDO = new ServiceItemsManageDO();
// 拷贝
BeanUtils.copyProperties(serviceItemsManageDTO, serviceItemsManageDO, IgnoreNullUtil.getNullPropertyNames(serviceItemsManageDTO));
// 如果 serviceItemsManageDTO 不为 null才进行拷贝
if (serviceItemsManageDTO != null) {
BeanUtils.copyProperties(serviceItemsManageDTO, serviceItemsManageDO, IgnoreNullUtil.getNullPropertyNames(serviceItemsManageDTO));
}
LoginUser loginUser = SecurityUtils.getLoginUser();
if (ObjectUtil.isNull(loginUser)) {
throw new DigitalLogisticsException(UserError.TIMEOUT);
@@ -36,28 +38,49 @@ public class ServiceItemsManageAssembler {
String userName = loginUser.getUsername();
// 获取登录人id
Long userId = loginUser.getUserid();
if(serviceItemsManageDTO.getServiceItemsManageId() != null){
// 只有在新增或编辑操作时才设置 createByName updateByName
// 查询列表时不应该自动设置这些字段否则会导致 SQL 中添加过滤条件影响查询结果
// 判断规则
// 1. 如果 serviceItemsManageId != null说明是编辑操作只设置更新相关字段
// 2. 如果 serviceItemsManageId == null 且前端传递了 createByName updateByName说明是查询条件不应该覆盖
// 3. 如果 serviceItemsManageId == null 且前端没有传递 createByName updateByName可能是新增操作设置默认值
if(serviceItemsManageDTO != null && serviceItemsManageDTO.getServiceItemsManageId() != null){
// 编辑操作只设置更新相关字段
if(userId != null){
serviceItemsManageDO.setUpdateBy(userId);
}else {
serviceItemsManageDO.setUpdateBy(new Long("0"));
}
serviceItemsManageDO.setUpdateByName(userName);
serviceItemsManageDO.setUpdateTime(new Date());
}else {
if(userId != null){
serviceItemsManageDO.setCreateBy(userId);
serviceItemsManageDO.setUpdateBy(userId);
}else {
serviceItemsManageDO.setCreateBy(new Long("0"));
serviceItemsManageDO.setUpdateBy(new Long("0"));
// 只有在 DTO 中没有传递 updateByName 时才设置避免覆盖前端传递的值
if(serviceItemsManageDO.getUpdateByName() == null || serviceItemsManageDO.getUpdateByName().isEmpty()){
serviceItemsManageDO.setUpdateByName(userName);
}
serviceItemsManageDO.setCreateByName(userName);
serviceItemsManageDO.setUpdateByName(userName);
serviceItemsManageDO.setCreateTime(new Date());
serviceItemsManageDO.setUpdateTime(new Date());
serviceItemsManageDO.setDelFlag(1);
} else if(serviceItemsManageDTO != null && serviceItemsManageDTO.getServiceItemsManageId() == null) {
// serviceItemsManageId == null可能是查询操作或新增操作
// 如果前端传递了 createByName updateByName说明是查询条件不应该设置已经在 BeanUtils.copyProperties 中拷贝了
// 如果前端没有传递 createByName updateByName可能是新增操作需要设置默认值
boolean hasQueryCondition = (serviceItemsManageDTO.getCreateByName() != null && !serviceItemsManageDTO.getCreateByName().isEmpty())
|| (serviceItemsManageDTO.getUpdateByName() != null && !serviceItemsManageDTO.getUpdateByName().isEmpty());
if(!hasQueryCondition) {
// 没有查询条件可能是新增操作设置默认值
if(userId != null){
serviceItemsManageDO.setCreateBy(userId);
serviceItemsManageDO.setUpdateBy(userId);
}else {
serviceItemsManageDO.setCreateBy(new Long("0"));
serviceItemsManageDO.setUpdateBy(new Long("0"));
}
serviceItemsManageDO.setCreateByName(userName);
serviceItemsManageDO.setUpdateByName(userName);
serviceItemsManageDO.setCreateTime(new Date());
serviceItemsManageDO.setUpdateTime(new Date());
serviceItemsManageDO.setDelFlag(1);
}
// 如果有查询条件createByName updateByName说明是查询操作不应该设置这些字段
// 字段值已经在 BeanUtils.copyProperties 中从 DTO 拷贝过来了
}
return serviceItemsManageDO;
}
@@ -0,0 +1,61 @@
package com.mhd.basic.interfaces.assember.shipperLeaseDetails;
import cn.hutool.core.util.ObjectUtil;
import com.mhd.basic.domain.lease.repository.todo.LeaseDO;
import com.mhd.basic.domain.shipperLeaseDetails.repository.todo.ShipperLeaseDetailsDO;
import com.mhd.basic.interfaces.dto.lease.LeaseDTO;
import com.mhd.basic.interfaces.dto.shipperLeaseDetailsApi.ShipperLeaseDetailsDTO;
import com.mhd.common.core.exception.digitalLogisticsException.DigitalLogisticsException;
import com.mhd.common.core.exception.digitalLogisticsException.UserError;
import com.mhd.common.core.utils.IgnoreNullUtil;
import com.mhd.common.core.utils.bean.BeanUtils;
import com.mhd.common.security.utils.SecurityUtils;
import com.mhd.system.api.model.LoginUser;
import org.springframework.stereotype.Component;
import java.util.Date;
/**
* 货主租赁明细Assembler
*
*/
@Component
public class ShipperLeaseDetailsAssembler {
/**
* 转换实体
*/
public ShipperLeaseDetailsDO toDO(ShipperLeaseDetailsDTO shipperLeaseDetailsDTO) {
ShipperLeaseDetailsDO shipperLeaseDetailsDO = new ShipperLeaseDetailsDO();
// 拷贝
BeanUtils.copyProperties(shipperLeaseDetailsDTO, shipperLeaseDetailsDO, IgnoreNullUtil.getNullPropertyNames(shipperLeaseDetailsDTO));
return shipperLeaseDetailsDO;
}
/**
* 转换实体
*/
public ShipperLeaseDetailsDO toDOByEdit(ShipperLeaseDetailsDTO shipperLeaseDetailsDTO) {
ShipperLeaseDetailsDO shipperLeaseDetailsDO = new ShipperLeaseDetailsDO();
// 拷贝
BeanUtils.copyProperties(shipperLeaseDetailsDTO, shipperLeaseDetailsDO, IgnoreNullUtil.getNullPropertyNames(shipperLeaseDetailsDTO));
LoginUser loginUser = SecurityUtils.getLoginUser();
if (ObjectUtil.isNull(loginUser)) {
throw new DigitalLogisticsException(UserError.TIMEOUT);
}
if(shipperLeaseDetailsDTO.getId() != null){
shipperLeaseDetailsDO.setUpdateBy(loginUser.getUserid());
shipperLeaseDetailsDO.setUpdateByName(loginUser.getUsername());
shipperLeaseDetailsDO.setUpdateTime(new Date());
}else {
shipperLeaseDetailsDO.setOrganizationId(loginUser.getUserPo().getOrganizationId());
shipperLeaseDetailsDO.setOrganizationName(loginUser.getUserPo().getOrganizationName());
shipperLeaseDetailsDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId());
shipperLeaseDetailsDO.setCreateBy(loginUser.getUserid());
shipperLeaseDetailsDO.setCreateByName(loginUser.getUsername());
shipperLeaseDetailsDO.setCreateTime(new Date());
}
return shipperLeaseDetailsDO;
}
}
@@ -44,6 +44,10 @@ public class BatchDetailDTO extends BaseVOEntity{
@Excel(name = "批次标签")
private String batchLabels;
@ApiModelProperty("字段名称")
@Excel(name = "字段名称")
private String fieldName;
@ApiModelProperty("输入控制: 1-必填 2-可选")
@Excel(name = "输入控制: 1-必填 2-可选")
private String inputControl;
@@ -56,6 +60,10 @@ public class BatchDetailDTO extends BaseVOEntity{
@Excel(name = "属性选项")
private String attributeOption;
@ApiModelProperty("是否显示: 0-不显示 1-显示")
@Excel(name = "是否显示: 0-不显示 1-显示")
private Integer isDisplay;
@ApiModelProperty("备注")
@Excel(name = "备注")
private String remark;
@@ -126,4 +126,10 @@ public class ExpenseAccountDTO extends BaseVOEntity{
@ApiModelProperty("服务项名称")
private String serviceItemsName;
@ApiModelProperty("费率")
private BigDecimal rate;
@ApiModelProperty(name = "创建订单是否固定显示 0-否 1-是")
private Integer fixedOrderDisplay;
}
@@ -0,0 +1,80 @@
package com.mhd.basic.interfaces.dto.lease;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.mhd.common.core.annotation.Excel;
import com.mhd.common.core.web.domain.BaseVOEntity;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
/**
* 租赁管理对象 container
*
*/
@Data
public class LeaseDTO extends BaseVOEntity{
private static final long serialVersionUID = 1L;
@ApiModelProperty("id")
private Long id;
@ApiModelProperty("组织表ID")
@Excel(name = "组织表ID")
private Long organizationId;
@ApiModelProperty("组织名称")
@Excel(name = "组织名称")
private String organizationName;
@ApiModelProperty("一级组织表ID")
@Excel(name = "一级组织表ID")
private Long topOrganizationId;
@ApiModelProperty("仓库ID")
private Long warehouseId;
@ApiModelProperty("仓库名字")
private String warehouseName;
@ApiModelProperty("货主id")
private Long shipperId;
@ApiModelProperty("货主名称")
private String cargoOwnerName;
@ApiModelProperty(value = "租赁方式(整租/散租)")
private String leaseType;
@ApiModelProperty("租赁面积(m²)")
private BigDecimal leaseArea;
@ApiModelProperty("开始日期")
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date startDate;
@ApiModelProperty("结束日期")
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date endDate;
@ApiModelProperty("备注")
private String remark;
@ApiModelProperty(name = "创建时间查询条件开始日期")
private String createTimeStart;
@ApiModelProperty(name = "创建时间查询条件结束日期")
private String createTimeEnd;
@ApiModelProperty(name = "修改时间查询条件开始日期")
private String updateTimeStart;
@ApiModelProperty(name = "修改时间查询条件结束日期")
private String updateTimeEnd;
}
@@ -181,4 +181,183 @@ public class MaterialBaseInfoDTO extends BaseVOEntity{
@ApiModelProperty("是否公用: 1-是 2-否")
@Excel(name = "是否公用: 1-是 2-否")
private Integer common;
}
/**
* 商品名称
*/
@ApiModelProperty("商品名称")
@Excel(name = "商品名称")
private String commodityName;
/**
* 商品编码
*/
@ApiModelProperty("商品编码")
@Excel(name = "商品编码")
private String commodityNo;
/**
* 料号
*/
@ApiModelProperty("料号")
@Excel(name = "料号")
private String materialNo;
/**
* 规格型号
*/
@ApiModelProperty("规格型号")
@Excel(name = "规格型号")
private String specificationModel;
/**
* Invoice No
*/
@ApiModelProperty("Invoice No")
@Excel(name = "Invoice No")
private String invoiceNo;
/**
*
*/
@ApiModelProperty("")
@Excel(name = "")
private String liter;
/**
* 尺寸
*/
@ApiModelProperty("尺寸")
@Excel(name = "尺寸")
private String size;
/**
* 申报单位
*/
@ApiModelProperty("申报单位")
@Excel(name = "申报单位")
private String declareUnit;
/**
* Batch Ref NOs
*/
@ApiModelProperty("Batch Ref NOs")
@Excel(name = "Batch Ref NOs")
private String batchRefNo;
/**
* Sheet Ref NOs
*/
@ApiModelProperty("Sheet Ref NOs")
@Excel(name = "Sheet Ref NOs")
private String sheetRefNo;
/**
* 原产国
*/
@ApiModelProperty("原产国")
@Excel(name = "原产国")
private String countryOfOrigin;
/**
* 箱号/卡板号
*/
@ApiModelProperty("箱号/卡板号")
@Excel(name = "箱号/卡板号")
private String casePalletNo;
/**
* 币制
*/
@ApiModelProperty("币制")
@Excel(name = "币制")
private String currency;
/**
* 申报数量
*/
@ApiModelProperty("申报数量")
@Excel(name = "申报数量")
private Double declareQuantity;
/**
* 箱数
*/
@ApiModelProperty("箱数")
@Excel(name = "箱数")
private Double caseCount;
/**
* 件数
*/
@ApiModelProperty("件数")
@Excel(name = "件数")
private Double pieceCount;
/**
* 出库数量
*/
@ApiModelProperty("出库数量")
@Excel(name = "出库数量")
private Double outboundQuantity;
/**
* 总净重(KG)
*/
@ApiModelProperty("总净重(KG)")
@Excel(name = "总净重(KG)")
private Double totalNetWeight;
/**
* 总毛重(KG)
*/
@ApiModelProperty("总毛重(KG)")
@Excel(name = "总毛重(KG)")
private Double totalGrossWeight;
/**
* 总体积(CBM)
*/
@ApiModelProperty("总体积(CBM)")
@Excel(name = "总体积(CBM)")
private Double totalVolume;
/**
* 总面积(SQM)
*/
@ApiModelProperty("总面积(SQM)")
@Excel(name = "总面积(SQM)")
private Double totalArea;
/**
* 总价
*/
@ApiModelProperty("总价")
@Excel(name = "总价")
private Double totalAmount;
/**
* 单位
*/
@ApiModelProperty("单位")
@Excel(name = "单位")
private String unit;
@ApiModelProperty("SKU码")
private String skuCode;
@ApiModelProperty("单价")
private BigDecimal unitPrice;
@ApiModelProperty("原产国")
private String originCountry;
@ApiModelProperty("HS码")
private String hsCode;
@ApiModelProperty("申报单位")
private String declarationUnit;
@ApiModelProperty("法定单位")
private String statutoryUnit;
@ApiModelProperty("法定第二单位")
private String statutorySecondUnit;
}
@@ -0,0 +1,74 @@
package com.mhd.basic.interfaces.dto.shipperLeaseDetailsApi;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.mhd.common.core.annotation.Excel;
import com.mhd.common.core.web.domain.BaseVOEntity;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.math.BigDecimal;
import java.util.Date;
/**
* 货主租赁明细
*
*/
@Data
public class ShipperLeaseDetailsDTO extends BaseVOEntity{
private static final long serialVersionUID = 1L;
@ApiModelProperty("id")
@TableId(type = IdType.AUTO)
private Long id;
@ApiModelProperty("组织表ID")
@Excel(name = "组织表ID")
private Long organizationId;
@ApiModelProperty("组织名称")
@Excel(name = "组织名称")
private String organizationName;
@ApiModelProperty("一级组织表ID")
@Excel(name = "一级组织表ID")
private Long topOrganizationId;
@ApiModelProperty("仓库ID")
private Long warehouseId;
@ApiModelProperty("仓库名字")
private String warehouseName;
@ApiModelProperty("货主id")
private Long shipperId;
@ApiModelProperty("货主名称")
private String cargoOwnerName;
@ApiModelProperty(value = "租赁方式(整租/散租)")
private String leaseType;
@ApiModelProperty("租赁面积(m²)")
private BigDecimal leaseArea;
@ApiModelProperty("业务日期")
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern="yyyy-MM-dd")
private Date businessDate;
@ApiModelProperty("业务日期开始时间")
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern="yyyy-MM-dd")
private Date businessDateStart;
@ApiModelProperty("业务日期结束时间")
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern="yyyy-MM-dd")
private Date businessDateEnd;
}
@@ -18,6 +18,7 @@ import com.mhd.common.core.constant.HttpStatus;
import com.mhd.common.core.domain.entity.R;
import com.sun.org.apache.bcel.internal.generic.NEW;
import io.swagger.annotations.ApiOperation;
import org.apache.commons.lang.StringUtils;
import org.apache.ibatis.annotations.Param;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
@@ -28,6 +29,8 @@ import javax.annotation.Resource;
import com.mhd.common.core.web.controller.BaseController;
import com.mhd.common.core.web.domain.AjaxResult;
import com.mhd.common.core.web.page.TableDataInfo;
import com.mhd.common.security.utils.SecurityUtils;
import com.mhd.system.api.model.LoginUser;
import org.springframework.web.client.RestTemplate;
/**
@@ -52,11 +55,35 @@ public class ExpenseAccountApi extends BaseController{
@GetMapping("/list")
public TableDataInfo list(ExpenseAccountDTO expenseAccountDTO)
{
//转换实体
ExpenseAccountDO expenseAccountDO = expenseAccountAssembler.toDO(expenseAccountDTO);
startPage();
List<ExpenseAccountPO> list = expenseAccountApplicationService.queryList(expenseAccountDO);
return getDataTable(list);
logger.info("收到查询费用科目列表请求,参数:{}", expenseAccountDTO);
try {
//转换实体如果 expenseAccountDTO null创建一个新的对象
if (expenseAccountDTO == null) {
expenseAccountDTO = new ExpenseAccountDTO();
logger.info("expenseAccountDTO 为 null,创建新对象");
}
ExpenseAccountDO expenseAccountDO = expenseAccountAssembler.toDO(expenseAccountDTO);
if(StringUtils.isBlank(expenseAccountDTO.getCreateByName())){
expenseAccountDO.setCreateByName(null);
}
if(StringUtils.isBlank(expenseAccountDTO.getUpdateByName())){
expenseAccountDO.setUpdateByName(null);
}
logger.info("转换后的 ExpenseAccountDO{}", expenseAccountDO);
startPage();
logger.info("分页参数已设置");
List<ExpenseAccountPO> list = expenseAccountApplicationService.queryList(expenseAccountDO);
logger.info("查询完成,返回数据条数:{}", list != null ? list.size() : 0);
if (list != null && list.isEmpty()) {
logger.warn("查询结果为空,可能的原因:1.数据库中没有符合条件的数据 2.数据权限过滤 3.SQL查询条件问题");
logger.warn("查询条件:topOrganizationId={}, del_flag=1", expenseAccountDO.getTopOrganizationId());
}
return getDataTable(list);
} catch (Exception e) {
logger.error("查询费用科目列表失败", e);
e.printStackTrace();
return getDataTable(new ArrayList<>());
}
}
@ApiOperation("查询费用科目树型列表")
@@ -81,9 +108,50 @@ public class ExpenseAccountApi extends BaseController{
public AjaxResult selectOtherExpenseAccount(SearchExpenseAccountDTO searchExpenseAccountDTO){
SearchExpenseAccountDO searchExpenseAccountDO = new SearchExpenseAccountDO();
BeanUtils.copyProperties(searchExpenseAccountDTO,searchExpenseAccountDO);
// 数据权限根据组织ID实现数据隔离
// organizationId=2827南光查询所有组织的数据其他组织只查询自己的数据
LoginUser loginUser = SecurityUtils.getLoginUser();
if (loginUser != null && loginUser.getOrganizationPo() != null) {
Long loginUserOrganizationId = loginUser.getOrganizationPo().getOrganizationId();
if (loginUserOrganizationId != null && loginUserOrganizationId.equals(2827L)) {
// 南光组织organizationId=2827可以查询所有组织的数据不设置 organizationId 过滤条件
searchExpenseAccountDO.setOrganizationId(null);
} else {
// 其他组织只查询自己组织的数据
searchExpenseAccountDO.setOrganizationId(loginUserOrganizationId);
}
}
return AjaxResult.success(expenseAccountApplicationService.selectOtherExpenseAccount(searchExpenseAccountDO));
}
/**
* 测试查询 - 不设置组织ID查看是否有数据
*/
@ApiOperation("测试查询费用科目列表(不设置组织ID")
@GetMapping("/testList")
public AjaxResult testList(ExpenseAccountDTO expenseAccountDTO)
{
logger.info("测试查询费用科目列表,不设置组织ID");
try {
if (expenseAccountDTO == null) {
expenseAccountDTO = new ExpenseAccountDTO();
}
ExpenseAccountDO expenseAccountDO = expenseAccountAssembler.toDO(expenseAccountDTO);
// 不设置组织ID测试是否能查询到数据
expenseAccountDO.setTopOrganizationId(null);
logger.info("测试查询参数:{}", expenseAccountDO);
startPage();
List<ExpenseAccountPO> list = expenseAccountApplicationService.queryList(expenseAccountDO);
logger.info("测试查询结果:{} 条", list != null ? list.size() : 0);
return AjaxResult.success(list);
} catch (Exception e) {
logger.error("测试查询失败", e);
return AjaxResult.error("测试查询失败:" + e.getMessage());
}
}
@ApiOperation("查询费用科目-所有现金明细")
@GetMapping("/selectAllCashExpenseAccount")
public AjaxResult selectAllCashExpenseAccount(){
@@ -197,7 +265,16 @@ public class ExpenseAccountApi extends BaseController{
return AjaxResult.error(e.getMessage());
}
}
@ApiOperation("修改创建订单默认显示设置")
@PostMapping("/changeFixedOrderDisplay")
public AjaxResult changeFixedOrderDisplay(@RequestBody ExpenseAccountDTO expenseAccountDTO)
{
try {
return toAjax(expenseAccountApplicationService.changeFixedOrderDisplay(expenseAccountDTO));
}catch (Exception e){
return AjaxResult.error(e.getMessage());
}
}
@ApiOperation("根据code获取费用科目")
@GetMapping(value = "/getInfoByCode")
@@ -8,6 +8,7 @@ import com.mhd.basic.domain.serviceItemsManage.repository.todo.ServiceItemsManag
import com.mhd.basic.interfaces.assember.serviceItemsManage.ServiceItemsManageAssembler;
import com.mhd.basic.interfaces.dto.serviceItemsManage.ServiceItemsManageDTO;
import io.swagger.annotations.ApiOperation;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
@@ -40,6 +41,12 @@ public class ServiceItemsManageApi extends BaseController{
{
//转换实体
ServiceItemsManageDO serviceItemsManageDO = serviceItemsManageAssembler.toDO(serviceItemsManageDTO);
if(StringUtils.isBlank(serviceItemsManageDTO.getCreateByName())){
serviceItemsManageDO.setCreateByName(null);
}
if(StringUtils.isBlank(serviceItemsManageDTO.getUpdateByName())){
serviceItemsManageDO.setUpdateByName(null);
}
startPage();
List<ServiceItemsManagePO> list = serviceItemsManageApplicationService.queryList(serviceItemsManageDO);
return getDataTable(list);
@@ -0,0 +1,112 @@
package com.mhd.basic.interfaces.facadeApi.lease;
import com.mhd.basic.application.service.Lease.LeaseApplicationService;
import com.mhd.basic.application.service.container.ContainerApplicationService;
import com.mhd.basic.domain.container.repository.po.ContainerPO;
import com.mhd.basic.domain.container.repository.todo.ContainerDO;
import com.mhd.basic.domain.lease.repository.po.LeasePO;
import com.mhd.basic.domain.lease.repository.todo.LeaseDO;
import com.mhd.basic.domain.shipperLeaseDetails.entity.WarehouseOccupancyRate;
import com.mhd.basic.interfaces.assember.container.ContainerAssembler;
import com.mhd.basic.interfaces.assember.lease.LeaseAssembler;
import com.mhd.basic.interfaces.dto.container.ContainerDTO;
import com.mhd.basic.interfaces.dto.lease.LeaseDTO;
import com.mhd.common.core.web.controller.BaseController;
import com.mhd.common.core.web.domain.AjaxResult;
import com.mhd.common.core.web.page.TableDataInfo;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.util.List;
/**
* 租赁管理Api
*/
@RestController
@RequestMapping("/LeaseApi")
public class LeaseApi extends BaseController{
@Autowired
private LeaseApplicationService leaseApplicationService;
@Resource
private LeaseAssembler leaseAssembler;
/**
* 分页查询租赁管理列表
*/
@ApiOperation("查询租赁管理列表")
@GetMapping("/list")
public TableDataInfo list(LeaseDTO leaseDTO)
{
//转换实体
LeaseDO leaseDO = leaseAssembler.toDO(leaseDTO);
startPage();
List<LeasePO> list = leaseApplicationService.queryList(leaseDO);
return getDataTable(list);
}
/**
* 分页查询租赁管理列表
*/
@ApiOperation("查询租赁管理列表")
@GetMapping("/listByApp")
public AjaxResult listByApp(LeaseDTO leaseDTO)
{
//转换实体
LeaseDO leaseDO = leaseAssembler.toDO(leaseDTO);
List<LeasePO> list = leaseApplicationService.queryList(leaseDO);
return AjaxResult.success(list);
}
/**
* 编辑租赁管理
*/
@ApiOperation("编辑租赁管理")
@PostMapping("/edit")
public AjaxResult edit(@RequestBody LeaseDTO leaseDTO)
{
//转换实体
LeaseDO leaseDO = leaseAssembler.toDOByEdit(leaseDTO);
if(leaseDTO.getId() != null){
return toAjax(leaseApplicationService.update(leaseDO));
}else {
return toAjax(leaseApplicationService.insert(leaseDO));
}
}
/**
* 批量删除租赁管理
*/
@ApiOperation("批量删除租赁管理")
@DeleteMapping("/deleteByIds/{leaseIds}")
public AjaxResult delete(@PathVariable Long[] leaseIds)
{
return toAjax(leaseApplicationService.delete(leaseIds));
}
/**
* 获取租赁管理详细信息
*/
@ApiOperation("获取租赁管理")
@GetMapping(value = "/getInfo/{leaseId}")
public AjaxResult getInfo(@PathVariable("leaseId") Long leaseId)
{
return AjaxResult.success(leaseApplicationService.getInfo(leaseId));
}
/**
* 批量作废租赁
*/
@ApiOperation("批量作废租赁")
@GetMapping("/nullifyByIds/{leaseIds}")
public AjaxResult nullifyByIds(@PathVariable("leaseIds") List<Long> leaseIds)
{
return toAjax(leaseApplicationService.nullifyByIds(leaseIds));
}
}
@@ -0,0 +1,161 @@
package com.mhd.basic.interfaces.facadeApi.shipperLeaseDetails;
import com.mhd.basic.application.service.Lease.LeaseApplicationService;
import com.mhd.basic.application.service.shipperLeaseDetails.ShipperLeaseDetailsApplicationService;
import com.mhd.basic.domain.lease.repository.po.LeasePO;
import com.mhd.basic.domain.lease.repository.todo.LeaseDO;
import com.mhd.basic.domain.shipperLeaseDetails.entity.ShipperLeaseDetails;
import com.mhd.basic.domain.shipperLeaseDetails.entity.WarehouseOccupancyRate;
import com.mhd.basic.domain.shipperLeaseDetails.repository.po.ShipperLeaseDetailsPO;
import com.mhd.basic.domain.shipperLeaseDetails.repository.todo.ShipperLeaseDetailsDO;
import com.mhd.basic.interfaces.assember.lease.LeaseAssembler;
import com.mhd.basic.interfaces.assember.shipperLeaseDetails.ShipperLeaseDetailsAssembler;
import com.mhd.basic.interfaces.dto.lease.LeaseDTO;
import com.mhd.basic.interfaces.dto.shipperLeaseDetailsApi.ShipperLeaseDetailsDTO;
import com.mhd.common.core.web.controller.BaseController;
import com.mhd.common.core.web.domain.AjaxResult;
import com.mhd.common.core.web.page.TableDataInfo;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.util.Comparator;
import java.util.List;
import java.util.stream.Collectors;
/**
* 货主租赁明细Api
*/
@RestController
@RequestMapping("/ShipperLeaseDetailsApi")
public class ShipperLeaseDetailsApi extends BaseController{
@Autowired
private LeaseApplicationService leaseApplicationService;
@Autowired
private ShipperLeaseDetailsApplicationService shipperLeaseDetailsApplicationService;
@Resource
private ShipperLeaseDetailsAssembler shipperLeaseDetailsAssembler;
/**
* 分页查询货主租赁明细列表
*/
@ApiOperation("查询货主租赁明细列表")
@GetMapping("/list")
public TableDataInfo list(ShipperLeaseDetailsDTO shipperLeaseDetailsDTO)
{
//转换实体
ShipperLeaseDetailsDO shipperLeaseDetailsDO = shipperLeaseDetailsAssembler.toDO(shipperLeaseDetailsDTO);
startPage();
List<ShipperLeaseDetailsPO> list = shipperLeaseDetailsApplicationService.queryList(shipperLeaseDetailsDO);
return getDataTable(list);
}
/**
* 分页查询货主租赁明细列表
*/
@ApiOperation("查询货主租赁明细列表")
@GetMapping("/listByApp")
public AjaxResult listByApp(ShipperLeaseDetailsDTO shipperLeaseDetailsDTO)
{
//转换实体
ShipperLeaseDetailsDO shipperLeaseDetailsDO = shipperLeaseDetailsAssembler.toDO(shipperLeaseDetailsDTO);
List<ShipperLeaseDetailsPO> list = shipperLeaseDetailsApplicationService.queryList(shipperLeaseDetailsDO);
return AjaxResult.success(list);
}
/**
* 编辑货主租赁明细
*/
@ApiOperation("编辑货主租赁明细")
@PostMapping("/edit")
public AjaxResult edit(@RequestBody ShipperLeaseDetailsDTO shipperLeaseDetailsDTO)
{
//转换实体
ShipperLeaseDetailsDO shipperLeaseDetailsDO = shipperLeaseDetailsAssembler.toDOByEdit(shipperLeaseDetailsDTO);
if(shipperLeaseDetailsDTO.getId() != null){
return toAjax(shipperLeaseDetailsApplicationService.update(shipperLeaseDetailsDO));
}else {
return toAjax(shipperLeaseDetailsApplicationService.insert(shipperLeaseDetailsDO));
}
}
/**
* 编辑货主租赁明细
*/
@ApiOperation("编辑货主租赁明细")
@PostMapping("/editList")
public AjaxResult edit(@RequestBody List<ShipperLeaseDetailsDTO> shipperLeaseDetailsDTO)
{
for (ShipperLeaseDetailsDTO leaseDetailsDTO : shipperLeaseDetailsDTO) {
//转换实体
ShipperLeaseDetailsDO shipperLeaseDetailsDO = shipperLeaseDetailsAssembler.toDOByEdit(leaseDetailsDTO);
shipperLeaseDetailsApplicationService.update(shipperLeaseDetailsDO);
}
return AjaxResult.success();
}
/**
* 批量删除货主租赁明细
*/
@ApiOperation("批量删除货主租赁明细")
@DeleteMapping("/deleteByIds/{shipperLeaseDetailsIds}")
public AjaxResult delete(@PathVariable Long[] shipperLeaseDetailsIds)
{
return toAjax(shipperLeaseDetailsApplicationService.delete(shipperLeaseDetailsIds));
}
/**
* 获取货主租赁明细详细信息
*/
@ApiOperation("获取货主租赁明细")
@GetMapping(value = "/getInfo/{shipperLeaseDetailsId}")
public AjaxResult getInfo(@PathVariable("shipperLeaseDetailsId") Long shipperLeaseDetailsId)
{
return AjaxResult.success(shipperLeaseDetailsApplicationService.getInfo(shipperLeaseDetailsId));
}
/**
* 批量作废租赁
*/
@ApiOperation("批量作废租赁")
@GetMapping("/nullifyByIds/{shipperLeaseDetailsIds}")
public AjaxResult nullifyByIds(@PathVariable("shipperLeaseDetailsIds") List<Long> shipperLeaseDetailsIds)
{
return toAjax(shipperLeaseDetailsApplicationService.nullifyByIds(shipperLeaseDetailsIds));
}
/**
* 计算货主租赁明细
*/
@ApiOperation("货主租赁明细")
@PostMapping("/shipperLeaseDetails")
public AjaxResult shipperLeaseDetails()
{
leaseApplicationService.shipperLeaseDetails();
return AjaxResult.success();
}
/**
* 计算仓库出租率
* warehouseId 仓库id
*/
@ApiOperation("仓库出租率")
@PostMapping("/warehouseOccupancyRate")
public TableDataInfo warehouseOccupancyRate(@RequestBody ShipperLeaseDetailsDTO shipperLeaseDetailsDTO)
{
ShipperLeaseDetailsDO shipperLeaseDetailsDO = shipperLeaseDetailsAssembler.toDO(shipperLeaseDetailsDTO);
List<WarehouseOccupancyRate> warehouseOccupancyRates = leaseApplicationService.warehouseOccupancyRate(shipperLeaseDetailsDO);
// 按照businessDate倒序排序
warehouseOccupancyRates = warehouseOccupancyRates.stream()
.sorted(Comparator.comparing(WarehouseOccupancyRate::getBusinessDate, Comparator.nullsLast(Comparator.reverseOrder())))
.collect(Collectors.toList());
return getDataTable(warehouseOccupancyRates);
}
}
@@ -85,12 +85,25 @@ public class SysDictDataServiceImpl extends ServiceImpl<SysDictDataMapper, SysDi
if (ObjectUtil.isNull(loginUser)) {
throw new DigitalLogisticsException(UserError.TIMEOUT);
}
// 数据权限验证南光组织organizationId=2827可以删除所有组织的数据其他组织只能删除自己组织的数据
Long loginUserOrganizationId = loginUser.getUserPo().getOrganizationId();
Long loginUserTopOrganizationId = loginUser.getUserPo().getTopOrganizationId();
for (Long dictCode : dictCodes)
{
SysDictData data = selectDictDataById(dictCode);
if (ObjectUtil.notEqual(data.getTopOrganizationId(), loginUser.getUserPo().getTopOrganizationId())) {
throw new ServiceException("修改失败");
// 南光组织organizationId=2827可以删除所有组织的数据
if (loginUserOrganizationId != null && loginUserOrganizationId.equals(2827L)) {
// 南光组织可以删除不需要验证 topOrganizationId
} else {
// 其他组织只能删除自己组织的数据
// 使用 Objects.equals 安全比较处理 null 值的情况
if (!java.util.Objects.equals(data.getTopOrganizationId(), loginUserTopOrganizationId)) {
throw new ServiceException("删除失败:无权删除其他组织的字典数据");
}
}
dictDataMapper.deleteDictDataById(dictCode);
SysDictData dictData = new SysDictData();
dictData.setDictType(data.getDictType());
@@ -146,11 +159,25 @@ public class SysDictDataServiceImpl extends ServiceImpl<SysDictDataMapper, SysDi
if (ObjectUtil.isNull(sysDictData)) {
throw new ServiceException("字典数据未找到");
}
if ("Y".equals(sysDictData.getIsDefault())) {
throw new ServiceException("默认数据不允许修改");
}
if (ObjectUtil.notEqual(sysDictData.getTopOrganizationId(), loginUser.getUserPo().getTopOrganizationId())) {
throw new ServiceException("修改失败");
// 数据权限验证南光组织organizationId=2827可以修改所有组织的数据包括默认数据其他组织只能修改自己组织的数据包括默认数据
Long loginUserOrganizationId = loginUser.getUserPo().getOrganizationId();
Long loginUserTopOrganizationId = loginUser.getUserPo().getTopOrganizationId();
Long dictDataTopOrganizationId = sysDictData.getTopOrganizationId();
Long dictDataOrganizationId = sysDictData.getOrganizationId();
// 南光组织organizationId=2827可以修改所有组织的数据包括默认数据
if (loginUserOrganizationId != null && loginUserOrganizationId.equals(2827L)) {
// 南光组织可以修改不需要验证 topOrganizationId
} else {
// 其他组织只能修改自己组织的数据包括默认数据
// 使用 Objects.equals 安全比较处理 null 值的情况
boolean isSameTopOrg = java.util.Objects.equals(dictDataTopOrganizationId, loginUserTopOrganizationId);
boolean isSameOrg = java.util.Objects.equals(dictDataOrganizationId, loginUserOrganizationId);
if (!isSameTopOrg || !isSameOrg) {
throw new ServiceException("修改失败:无权修改其他组织的字典数据");
}
}
data.setUpdateBy(loginUser.getUserPo().getUserName());
int row = dictDataMapper.updateDictData(data);
@@ -13,19 +13,17 @@ spring:
cloud:
nacos:
discovery:
# server-addr: 127.0.0.1:8848
# 线上测试环境配置 容器名+端口号
server-addr: 10.33.0.129:6010
#线上正式环境
# server-addr: 10.102.192.105:6848
server-addr: 10.102.192.5:6848
username: nacos
password: manhuoda@2023
config:
# server-addr: 127.0.0.1:8848
# 线上测试环境配置 容器名+端口号
server-addr: 10.33.0.129:6010
#线上正式环境
# server-addr: 10.102.192.105:6848
server-addr: 10.102.192.5:6848
username: nacos
password: manhuoda@2023
group: DEFAULT_GROUP # 默认分组就是DEFAULT_GROUP,如果使用默认分组可以不配置
file-extension: yml #默认properties
# 共享配置
shared-configs:
- application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}
- application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}
@@ -102,7 +102,7 @@
WHERE
a.del_flag = 1
<include refid="common_where"/>
order by account_type,service_items_code,upper_subject_code,show_seq
order by a.update_time DESC
</select>
<select id="selectCostSubject" parameterType="com.mhd.basic.domain.expenseAccount.repository.todo.ExpenseAccountDO"
resultType="com.mhd.basic.domain.expenseAccount.repository.po.ExpenseAccountPO">
@@ -191,12 +191,31 @@
<if test="expenseAccountDO.updateTimeEnd != null and expenseAccountDO.updateTimeEnd != ''">
AND date_format(a.update_time,'%Y-%m-%d') <![CDATA[<=]]> #{expenseAccountDO.updateTimeEnd}
</if>
<if test="expenseAccountDO.topOrganizationId != null ">
<!-- 数据权限:南光组织(organizationId=2827)查全部,其他组织查自己 -->
<!-- 如果 organizationId 和 topOrganizationId 都为 null,表示查询所有组织的数据(不添加组织过滤条件) -->
<if test="expenseAccountDO.organizationId != null">
<!-- 如果设置了 organizationId,添加 organization_id 条件 -->
and a.organization_id = #{expenseAccountDO.organizationId}
-- and a.organization_name IS NOT NULL
-- and a.organization_name != ''
-- and LENGTH(TRIM(a.organization_name)) > 0
</if>
<if test="expenseAccountDO.topOrganizationId != null and expenseAccountDO.organizationId == null">
<!-- 如果设置了 topOrganizationId 但没有设置 organizationId,添加 top_organization_id 条件 -->
and a.top_organization_id = #{expenseAccountDO.topOrganizationId}
-- and a.organization_name IS NOT NULL
-- and a.organization_name != ''
-- and LENGTH(TRIM(a.organization_name)) > 0
</if>
<if test="expenseAccountDO.organizationName != null and expenseAccountDO.organizationName != ''">
and a.organization_name like concat('%', #{expenseAccountDO.organizationName}, '%')
</if>
<if test="expenseAccountDO.serviceItemsCode != null and expenseAccountDO.serviceItemsCode != ''">
and b.service_items_code = #{expenseAccountDO.serviceItemsCode}
</if>
<if test="expenseAccountDO.fixedOrderDisplay != null ">
and a.fixed_order_display = #{expenseAccountDO.fixedOrderDisplay}
</if>
</sql>
<select id="selectExpenseAccount" parameterType="com.mhd.basic.domain.expenseAccount.repository.todo.SearchExpenseAccountDO" resultType="com.mhd.basic.domain.expenseAccount.repository.po.QueryExpenseAccountPO">
select
@@ -238,6 +257,15 @@
<if test="searchExpenseAccountDO.societyStatus != null ">
and a.society_status = #{searchExpenseAccountDO.societyStatus}
</if>
<!-- 数据权限:南光组织(organizationId=2827)查全部,其他组织查自己 -->
<!-- 如果 organizationId 为 null,表示查询所有组织的数据(不添加组织过滤条件) -->
<if test="searchExpenseAccountDO.organizationId != null">
<!-- 如果设置了 organizationId,添加 organization_id 条件 -->
and a.organization_id = #{searchExpenseAccountDO.organizationId}
and a.organization_name IS NOT NULL
and a.organization_name != ''
and LENGTH(TRIM(a.organization_name)) > 0
</if>
and a.del_flag=1
order by show_seq
</select>
@@ -8,18 +8,36 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<sql id="selectServiceItemsManagePo1">
<where>
del_flag = 1
<if test="createByName != null and createByName != ''">
and create_by_name like concat('%', #{createByName}, '%')
</if>
<if test="updateByName != null and updateByName != ''">
and update_by_name like concat('%', #{updateByName}, '%')
</if>
<if test="topOrganizationId != null ">
and top_organization_id = #{topOrganizationId}
</if>
<if test="organizationId != null ">
<!-- &lt;!&ndash; 删除标记:0-无状态,1-正常,2-已删除,查询时只查询正常的数据 &ndash;&gt;-->
<!-- <choose>-->
<!-- <when test="delFlag != null">-->
<!-- and del_flag = #{delFlag}-->
<!-- </when>-->
<!-- <otherwise>-->
<!-- and del_flag = 1-->
<!-- </otherwise>-->
<!-- </choose>-->
<!-- <if test="createByName != null and createByName != ''">-->
<!-- and create_by_name like concat('%', #{createByName}, '%')-->
<!-- </if>-->
<!-- <if test="updateByName != null and updateByName != ''">-->
<!-- and update_by_name like concat('%', #{updateByName}, '%')-->
<!-- </if>-->
<!-- 数据权限:南光组织(organizationId=2827)查全部,其他组织查自己 -->
<!-- 如果 organizationId 和 topOrganizationId 都为 null,表示查询所有组织的数据(不添加组织过滤条件) -->
<if test="organizationId != null">
<!-- 如果设置了 organizationId,添加 organization_id 条件 -->
and organization_id = #{organizationId}
-- and organization_name IS NOT NULL
-- and organization_name != ''
-- and LENGTH(TRIM(organization_name)) > 0
</if>
<if test="topOrganizationId != null and organizationId == null">
<!-- 如果设置了 topOrganizationId 但没有设置 organizationId,添加 top_organization_id 条件 -->
and top_organization_id = #{topOrganizationId}
-- and organization_name IS NOT NULL
-- and organization_name != ''
-- and LENGTH(TRIM(organization_name)) > 0
</if>
<if test="organizationName != null and organizationName != ''">
and organization_name like concat('%', #{organizationName}, '%')
@@ -42,12 +60,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="createTimeEnd != null and createTimeEnd != ''">
AND date_format(create_time,'%Y-%m-%d') <![CDATA[<=]]> #{createTimeEnd}
</if>
<if test="createByName != null and createByName != ''">
and create_by_name like concat('%', #{createByName}, '%')
</if>
<if test="updateByName != null and updateByName != ''">
and update_by_name like concat('%', #{updateByName}, '%')
</if>
<if test="updateTimeStart != null and updateTimeStart != ''">
AND date_format(update_time,'%Y-%m-%d') <![CDATA[>=]]> #{updateTimeStart}
</if>
@@ -63,10 +75,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<include refid="selectServiceItemsManagePo1"/>
</select>
<select id="selectServiceTypes"
<select id="selectServiceTypes" parameterType="com.mhd.basic.domain.serviceItemsManage.repository.todo.ServiceItemsManageDO"
resultType="com.mhd.basic.domain.serviceItemsManage.repository.po.ServiceItemsManagePO">
select organization_name,service_items_code,service_items_name,tax_rate,CONCAT(service_items_name,service_items_code) cost_type
from service_items_manage
where del_flag = 1
<include refid="selectServiceItemsManagePo1"/>
</select>
</mapper>

Some files were not shown because too many files have changed in this diff Show More