From 61d9d8704f4e8da9213c040d9274fcf32e0e5b29 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=AD=A3=E5=9C=A3=E5=8D=8E?= <752718920@qq.com> Date: Thu, 9 Mar 2023 00:01:50 +0800 Subject: [PATCH] =?UTF-8?q?=E7=BB=99=E8=AE=A1=E9=87=8F=E5=8D=95=E4=BD=8D?= =?UTF-8?q?=E8=A1=A8=E4=BF=AE=E6=94=B9=E6=AF=94=E4=BE=8B=E7=9A=84=E5=AD=97?= =?UTF-8?q?=E6=AE=B5=E7=B1=BB=E5=9E=8B=EF=BC=8C=E7=BB=99=E7=B3=BB=E7=BB=9F?= =?UTF-8?q?=E5=8F=82=E6=95=B0=E8=A1=A8=E5=A2=9E=E5=8A=A0=E9=87=91=E9=A2=9D?= =?UTF-8?q?=E5=AE=A1=E6=A0=B8=E5=90=AF=E7=94=A8=E6=A0=87=E8=AE=B0=EF=BC=8C?= =?UTF-8?q?=E7=BB=99=E5=8D=95=E6=8D=AE=E5=A2=9E=E5=8A=A0=E6=9D=A5=E6=BA=90?= =?UTF-8?q?=E5=AD=97=E6=AE=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- jshERP-boot/docs/jsh_erp.sql | 69 ++++++++--------- jshERP-boot/docs/华夏ERP数据库设计汇总.xlsx | Bin 170333 -> 170499 bytes .../docs/数据库更新记录-首次安装请勿使用.txt | 16 +++- .../jsh/erp/controller/AccountController.java | 9 ++- .../erp/controller/DepotHeadController.java | 19 +++-- .../erp/controller/DepotItemController.java | 14 +++- .../erp/datasource/entities/AccountHead.java | 10 +++ .../entities/AccountHeadExample.java | 70 ++++++++++++++++++ .../erp/datasource/entities/DepotHead.java | 10 +++ .../datasource/entities/DepotHeadExample.java | 70 ++++++++++++++++++ .../erp/datasource/entities/SystemConfig.java | 10 +++ .../entities/SystemConfigExample.java | 70 ++++++++++++++++++ .../com/jsh/erp/datasource/entities/Unit.java | 20 ++--- .../erp/datasource/entities/UnitExample.java | 61 +++++++-------- .../datasource/mappers/DepotHeadMapperEx.java | 12 ++- .../datasource/mappers/DepotItemMapperEx.java | 10 ++- .../erp/service/account/AccountService.java | 63 +++++++++++----- .../service/depotHead/DepotHeadService.java | 36 ++++----- .../service/depotItem/DepotItemService.java | 44 +++++------ .../erp/service/material/MaterialService.java | 10 +-- .../systemConfig/SystemConfigService.java | 17 +++++ .../com/jsh/erp/service/unit/UnitService.java | 14 ++-- .../mapper_xml/AccountHeadMapper.xml | 25 +++++-- .../resources/mapper_xml/DepotHeadMapper.xml | 25 +++++-- .../mapper_xml/DepotHeadMapperEx.xml | 24 ++++++ .../mapper_xml/DepotItemMapperEx.xml | 12 +++ .../mapper_xml/SystemConfigMapper.xml | 23 +++++- .../main/resources/mapper_xml/UnitMapper.xml | 38 +++++----- 28 files changed, 608 insertions(+), 193 deletions(-) diff --git a/jshERP-boot/docs/jsh_erp.sql b/jshERP-boot/docs/jsh_erp.sql index b5534026..e6a2453d 100644 --- a/jshERP-boot/docs/jsh_erp.sql +++ b/jshERP-boot/docs/jsh_erp.sql @@ -10,7 +10,7 @@ Target Server Type : MYSQL Target Server Version : 50704 File Encoding : 65001 -Date: 2023-02-20 00:10:15 +Date: 2023-03-08 20:57:27 */ SET FOREIGN_KEY_CHECKS=0; @@ -59,6 +59,7 @@ CREATE TABLE `jsh_account_head` ( `remark` varchar(1000) DEFAULT NULL COMMENT '备注', `file_name` varchar(500) DEFAULT NULL COMMENT '附件名称', `status` varchar(1) DEFAULT NULL COMMENT '状态,0未审核、1已审核、9审核中', + `source` varchar(1) DEFAULT '0' COMMENT '单据来源,0-pc,1-手机', `tenant_id` bigint(20) DEFAULT NULL COMMENT '租户id', `delete_flag` varchar(1) DEFAULT '0' COMMENT '删除标记,0未删除,1删除', PRIMARY KEY (`id`), @@ -70,12 +71,12 @@ CREATE TABLE `jsh_account_head` ( -- ---------------------------- -- Records of jsh_account_head -- ---------------------------- -INSERT INTO `jsh_account_head` VALUES ('118', '收入', '58', '16', '63', '55.000000', null, '55.000000', '17', 'SR00000000643', '2021-06-02 00:24:49', null, null, '1', '63', '0'); -INSERT INTO `jsh_account_head` VALUES ('119', '支出', '68', '16', '63', '-66.000000', null, '-66.000000', '17', 'ZC00000000644', '2021-06-02 00:25:01', null, null, '0', '63', '0'); -INSERT INTO `jsh_account_head` VALUES ('122', '转账', null, '17', '63', '-11.000000', null, '-11.000000', '17', 'ZZ00000000647', '2021-06-02 00:25:32', null, null, '0', '63', '0'); -INSERT INTO `jsh_account_head` VALUES ('124', '收预付款', '60', '17', '63', '80.000000', '0.000000', '80.000000', null, 'SYF00000000649', '2021-07-06 23:43:48', null, null, '0', '63', '0'); -INSERT INTO `jsh_account_head` VALUES ('125', '收款', '58', '17', '63', '10.000000', '0.000000', '10.000000', '17', 'SK00000000653', '2021-07-06 23:46:38', null, null, '0', '63', '0'); -INSERT INTO `jsh_account_head` VALUES ('126', '付款', '57', '17', '63', '-50.000000', '0.000000', '-50.000000', '17', 'FK00000000654', '2021-07-06 23:47:23', null, null, '0', '63', '0'); +INSERT INTO `jsh_account_head` VALUES ('118', '收入', '58', '16', '63', '55.000000', null, '55.000000', '17', 'SR00000000643', '2021-06-02 00:24:49', null, null, '1', '0', '63', '0'); +INSERT INTO `jsh_account_head` VALUES ('119', '支出', '68', '16', '63', '-66.000000', null, '-66.000000', '17', 'ZC00000000644', '2021-06-02 00:25:01', null, null, '0', '0', '63', '0'); +INSERT INTO `jsh_account_head` VALUES ('122', '转账', null, '17', '63', '-11.000000', null, '-11.000000', '17', 'ZZ00000000647', '2021-06-02 00:25:32', null, null, '0', '0', '63', '0'); +INSERT INTO `jsh_account_head` VALUES ('124', '收预付款', '60', '17', '63', '80.000000', '0.000000', '80.000000', null, 'SYF00000000649', '2021-07-06 23:43:48', null, null, '0', '0', '63', '0'); +INSERT INTO `jsh_account_head` VALUES ('125', '收款', '58', '17', '63', '10.000000', '0.000000', '10.000000', '17', 'SK00000000653', '2021-07-06 23:46:38', null, null, '0', '0', '63', '0'); +INSERT INTO `jsh_account_head` VALUES ('126', '付款', '57', '17', '63', '-50.000000', '0.000000', '-50.000000', '17', 'FK00000000654', '2021-07-06 23:47:23', null, null, '0', '0', '63', '0'); -- ---------------------------- -- Table structure for jsh_account_item @@ -169,6 +170,7 @@ CREATE TABLE `jsh_depot_head` ( `deposit` decimal(24,6) DEFAULT NULL COMMENT '订金', `status` varchar(1) DEFAULT NULL COMMENT '状态,0未审核、1已审核、2完成采购|销售、3部分采购|销售、9审核中', `purchase_status` varchar(1) DEFAULT NULL COMMENT '采购状态,0未采购、2完成采购、3部分采购', + `source` varchar(1) DEFAULT '0' COMMENT '单据来源,0-pc,1-手机', `link_number` varchar(50) DEFAULT NULL COMMENT '关联订单号', `tenant_id` bigint(20) DEFAULT NULL COMMENT '租户id', `delete_flag` varchar(1) DEFAULT '0' COMMENT '删除标记,0未删除,1删除', @@ -180,22 +182,22 @@ CREATE TABLE `jsh_depot_head` ( -- ---------------------------- -- Records of jsh_depot_head -- ---------------------------- -INSERT INTO `jsh_depot_head` VALUES ('258', '其它', '采购订单', 'CGDD00000000630', 'CGDD00000000630', '2021-06-02 00:21:54', '2021-06-02 00:21:44', '57', '63', null, null, null, '-110.000000', '现付', null, null, null, null, null, null, null, null, null, null, null, '2', '0', null, '63', '0'); -INSERT INTO `jsh_depot_head` VALUES ('259', '入库', '采购', 'CGRK00000000631', 'CGRK00000000631', '2021-06-02 00:22:23', '2021-06-02 00:22:05', '57', '63', '17', '-110.000000', null, '-110.000000', '现付', null, null, null, null, '', '', '0.000000', '0.000000', '110.000000', '0.000000', null, '0', '0', 'CGDD00000000630', '63', '0'); -INSERT INTO `jsh_depot_head` VALUES ('260', '出库', '采购退货', 'CGTH00000000632', 'CGTH00000000632', '2021-06-02 00:22:35', '2021-06-02 00:22:26', '57', '63', '17', '22.000000', null, '22.000000', '现付', null, null, null, null, null, null, '0.000000', '0.000000', '22.000000', '0.000000', null, '0', '0', null, '63', '0'); -INSERT INTO `jsh_depot_head` VALUES ('261', '其它', '销售订单', 'XSDD00000000633', 'XSDD00000000633', '2021-06-02 00:22:48', '2021-06-02 00:22:39', '58', '63', null, null, null, '44.000000', '现付', null, null, null, '', null, null, null, null, null, null, null, '2', '0', null, '63', '0'); -INSERT INTO `jsh_depot_head` VALUES ('262', '出库', '销售', 'XSCK00000000634', 'XSCK00000000634', '2021-06-02 00:23:03', '2021-06-02 00:22:54', '58', '63', '17', '44.000000', null, '44.000000', '现付', null, null, null, '', '', '', '0.000000', '0.000000', '44.000000', '0.000000', null, '0', '0', 'XSDD00000000633', '63', '0'); -INSERT INTO `jsh_depot_head` VALUES ('263', '入库', '销售退货', 'XSTH00000000635', 'XSTH00000000635', '2021-06-02 00:23:12', '2021-06-02 00:23:05', '71', '63', '17', '-22.000000', null, '-22.000000', '现付', null, null, null, '', '', '', '0.000000', '0.000000', '22.000000', '0.000000', null, '0', '0', null, '63', '0'); -INSERT INTO `jsh_depot_head` VALUES ('264', '出库', '零售', 'LSCK00000000636', 'LSCK00000000636', '2021-06-02 00:23:21', '2021-06-02 00:23:14', '60', '63', '17', '22.000000', null, '22.000000', '现付', null, null, null, null, null, null, null, null, null, null, null, '0', '0', null, '63', '0'); -INSERT INTO `jsh_depot_head` VALUES ('265', '入库', '零售退货', 'LSTH00000000637', 'LSTH00000000637', '2021-06-02 00:23:29', '2021-06-02 00:23:23', '60', '63', '17', '-22.000000', null, '-22.000000', '现付', null, null, null, null, null, null, null, null, null, null, null, '0', '0', null, '63', '0'); -INSERT INTO `jsh_depot_head` VALUES ('266', '入库', '其它', 'QTRK00000000638', 'QTRK00000000638', '2021-06-02 00:23:48', '2021-06-02 00:23:36', '57', '63', null, null, null, '-55.000000', '现付', null, null, null, null, null, null, null, null, null, null, null, '1', '0', null, '63', '0'); -INSERT INTO `jsh_depot_head` VALUES ('267', '出库', '其它', 'QTCK00000000639', 'QTCK00000000639', '2021-06-02 00:23:59', '2021-06-02 00:23:50', '58', '63', null, null, null, '30.000000', '现付', null, null, null, null, null, null, null, null, null, null, null, '0', '0', null, '63', '0'); -INSERT INTO `jsh_depot_head` VALUES ('268', '出库', '调拨', 'DBCK00000000640', 'DBCK00000000640', '2021-06-02 00:24:09', '2021-06-02 00:24:00', null, '63', null, null, null, '11.000000', '现付', null, null, null, null, null, null, null, null, null, null, null, '0', '0', null, '63', '0'); -INSERT INTO `jsh_depot_head` VALUES ('269', '其它', '组装单', 'ZZD00000000641', 'ZZD00000000641', '2021-06-02 00:24:29', '2021-06-02 00:24:11', null, '63', null, null, null, '0.000000', '现付', null, null, null, null, null, null, null, null, null, null, null, '0', '0', null, '63', '0'); -INSERT INTO `jsh_depot_head` VALUES ('270', '其它', '拆卸单', 'CXD00000000642', 'CXD00000000642', '2021-06-02 00:24:45', '2021-06-02 00:24:32', null, '63', null, null, null, '0.000000', '现付', null, null, null, null, null, null, null, null, null, null, null, '0', '0', null, '63', '0'); -INSERT INTO `jsh_depot_head` VALUES ('271', '入库', '采购', 'CGRK00000000651', 'CGRK00000000651', '2021-07-06 23:45:20', '2021-07-06 23:44:45', '57', '63', '17', '-20.000000', null, '-80.000000', '现付', null, null, null, null, '', '', '0.000000', '0.000000', '80.000000', '0.000000', null, '0', '0', null, '63', '0'); -INSERT INTO `jsh_depot_head` VALUES ('272', '出库', '销售', 'XSCK00000000652', 'XSCK00000000652', '2021-07-06 23:46:07', '2021-07-06 23:45:24', '58', '63', '17', '8.000000', null, '28.000000', '现付', null, null, null, '', '', '', '0.000000', '0.000000', '28.000000', '0.000000', null, '0', '0', null, '63', '0'); -INSERT INTO `jsh_depot_head` VALUES ('273', '入库', '采购', 'CGRK00000000658', 'CGRK00000000658', '2021-07-28 00:58:12', '2021-07-28 00:58:02', '57', '63', '17', '-60.000000', null, '-60.000000', '现付', null, null, null, null, '', '', '0.000000', '0.000000', '60.000000', '0.000000', null, '0', '0', null, '63', '0'); +INSERT INTO `jsh_depot_head` VALUES ('258', '其它', '采购订单', 'CGDD00000000630', 'CGDD00000000630', '2021-06-02 00:21:54', '2021-06-02 00:21:44', '57', '63', null, null, null, '-110.000000', '现付', null, null, null, null, null, null, null, null, null, null, null, '2', '0', '0', null, '63', '0'); +INSERT INTO `jsh_depot_head` VALUES ('259', '入库', '采购', 'CGRK00000000631', 'CGRK00000000631', '2021-06-02 00:22:23', '2021-06-02 00:22:05', '57', '63', '17', '-110.000000', null, '-110.000000', '现付', null, null, null, null, '', '', '0.000000', '0.000000', '110.000000', '0.000000', null, '0', '0', '0', 'CGDD00000000630', '63', '0'); +INSERT INTO `jsh_depot_head` VALUES ('260', '出库', '采购退货', 'CGTH00000000632', 'CGTH00000000632', '2021-06-02 00:22:35', '2021-06-02 00:22:26', '57', '63', '17', '22.000000', null, '22.000000', '现付', null, null, null, null, null, null, '0.000000', '0.000000', '22.000000', '0.000000', null, '0', '0', '0', null, '63', '0'); +INSERT INTO `jsh_depot_head` VALUES ('261', '其它', '销售订单', 'XSDD00000000633', 'XSDD00000000633', '2021-06-02 00:22:48', '2021-06-02 00:22:39', '58', '63', null, null, null, '44.000000', '现付', null, null, null, '', null, null, null, null, null, null, null, '2', '0', '0', null, '63', '0'); +INSERT INTO `jsh_depot_head` VALUES ('262', '出库', '销售', 'XSCK00000000634', 'XSCK00000000634', '2021-06-02 00:23:03', '2021-06-02 00:22:54', '58', '63', '17', '44.000000', null, '44.000000', '现付', null, null, null, '', '', '', '0.000000', '0.000000', '44.000000', '0.000000', null, '0', '0', '0', 'XSDD00000000633', '63', '0'); +INSERT INTO `jsh_depot_head` VALUES ('263', '入库', '销售退货', 'XSTH00000000635', 'XSTH00000000635', '2021-06-02 00:23:12', '2021-06-02 00:23:05', '71', '63', '17', '-22.000000', null, '-22.000000', '现付', null, null, null, '', '', '', '0.000000', '0.000000', '22.000000', '0.000000', null, '0', '0', '0', null, '63', '0'); +INSERT INTO `jsh_depot_head` VALUES ('264', '出库', '零售', 'LSCK00000000636', 'LSCK00000000636', '2021-06-02 00:23:21', '2021-06-02 00:23:14', '60', '63', '17', '22.000000', null, '22.000000', '现付', null, null, null, null, null, null, null, null, null, null, null, '0', '0', '0', null, '63', '0'); +INSERT INTO `jsh_depot_head` VALUES ('265', '入库', '零售退货', 'LSTH00000000637', 'LSTH00000000637', '2021-06-02 00:23:29', '2021-06-02 00:23:23', '60', '63', '17', '-22.000000', null, '-22.000000', '现付', null, null, null, null, null, null, null, null, null, null, null, '0', '0', '0', null, '63', '0'); +INSERT INTO `jsh_depot_head` VALUES ('266', '入库', '其它', 'QTRK00000000638', 'QTRK00000000638', '2021-06-02 00:23:48', '2021-06-02 00:23:36', '57', '63', null, null, null, '-55.000000', '现付', null, null, null, null, null, null, null, null, null, null, null, '1', '0', '0', null, '63', '0'); +INSERT INTO `jsh_depot_head` VALUES ('267', '出库', '其它', 'QTCK00000000639', 'QTCK00000000639', '2021-06-02 00:23:59', '2021-06-02 00:23:50', '58', '63', null, null, null, '30.000000', '现付', null, null, null, null, null, null, null, null, null, null, null, '0', '0', '0', null, '63', '0'); +INSERT INTO `jsh_depot_head` VALUES ('268', '出库', '调拨', 'DBCK00000000640', 'DBCK00000000640', '2021-06-02 00:24:09', '2021-06-02 00:24:00', null, '63', null, null, null, '11.000000', '现付', null, null, null, null, null, null, null, null, null, null, null, '0', '0', '0', null, '63', '0'); +INSERT INTO `jsh_depot_head` VALUES ('269', '其它', '组装单', 'ZZD00000000641', 'ZZD00000000641', '2021-06-02 00:24:29', '2021-06-02 00:24:11', null, '63', null, null, null, '0.000000', '现付', null, null, null, null, null, null, null, null, null, null, null, '0', '0', '0', null, '63', '0'); +INSERT INTO `jsh_depot_head` VALUES ('270', '其它', '拆卸单', 'CXD00000000642', 'CXD00000000642', '2021-06-02 00:24:45', '2021-06-02 00:24:32', null, '63', null, null, null, '0.000000', '现付', null, null, null, null, null, null, null, null, null, null, null, '0', '0', '0', null, '63', '0'); +INSERT INTO `jsh_depot_head` VALUES ('271', '入库', '采购', 'CGRK00000000651', 'CGRK00000000651', '2021-07-06 23:45:20', '2021-07-06 23:44:45', '57', '63', '17', '-20.000000', null, '-80.000000', '现付', null, null, null, null, '', '', '0.000000', '0.000000', '80.000000', '0.000000', null, '0', '0', '0', null, '63', '0'); +INSERT INTO `jsh_depot_head` VALUES ('272', '出库', '销售', 'XSCK00000000652', 'XSCK00000000652', '2021-07-06 23:46:07', '2021-07-06 23:45:24', '58', '63', '17', '8.000000', null, '28.000000', '现付', null, null, null, '', '', '', '0.000000', '0.000000', '28.000000', '0.000000', null, '0', '0', '0', null, '63', '0'); +INSERT INTO `jsh_depot_head` VALUES ('273', '入库', '采购', 'CGRK00000000658', 'CGRK00000000658', '2021-07-28 00:58:12', '2021-07-28 00:58:02', '57', '63', '17', '-60.000000', null, '-60.000000', '现付', null, null, null, null, '', '', '0.000000', '0.000000', '60.000000', '0.000000', null, '0', '0', '0', null, '63', '0'); -- ---------------------------- -- Table structure for jsh_depot_item @@ -599,7 +601,7 @@ CREATE TABLE `jsh_msg` ( `msg_content` varchar(500) DEFAULT NULL COMMENT '消息内容', `create_time` datetime DEFAULT NULL COMMENT '创建时间', `type` varchar(20) DEFAULT NULL COMMENT '消息类型', - `user_id` bigint(20) NULL DEFAULT NULL COMMENT '接收人id' , + `user_id` bigint(20) DEFAULT NULL COMMENT '接收人id', `status` varchar(1) DEFAULT NULL COMMENT '状态,1未读 2已读', `tenant_id` bigint(20) DEFAULT NULL COMMENT '租户id', `delete_Flag` varchar(1) DEFAULT '0' COMMENT '删除标记,0未删除,1删除', @@ -698,7 +700,7 @@ CREATE TABLE `jsh_platform_config` ( `platform_key_info` varchar(100) DEFAULT NULL COMMENT '关键词名称', `platform_value` varchar(200) DEFAULT NULL COMMENT '值', PRIMARY KEY (`id`) -) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8 COMMENT='平台参数'; +) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8 COMMENT='平台参数'; -- ---------------------------- -- Records of jsh_platform_config @@ -849,6 +851,7 @@ CREATE TABLE `jsh_system_config` ( `purchase_by_sale_flag` varchar(1) DEFAULT '0' COMMENT '以销定购启用标记,0未启用,1启用', `multi_level_approval_flag` varchar(1) DEFAULT '0' COMMENT '多级审核启用标记,0未启用,1启用', `multi_bill_type` varchar(200) DEFAULT NULL COMMENT '流程类型,可多选', + `amount_approval_flag` varchar(1) DEFAULT '0' COMMENT '金额审核启用标记,0未启用,1启用', `tenant_id` bigint(20) DEFAULT NULL COMMENT '租户id', `delete_flag` varchar(1) DEFAULT '0' COMMENT '删除标记,0未删除,1删除', PRIMARY KEY (`id`) @@ -857,7 +860,7 @@ CREATE TABLE `jsh_system_config` ( -- ---------------------------- -- Records of jsh_system_config -- ---------------------------- -INSERT INTO `jsh_system_config` VALUES ('11', '公司test', '小李', '地址1', '12345678', null, null, '注:本单为我公司与客户约定账期内结款的依据,由客户或其单位员工签字生效,并承担法律责任。', '0', '0', '1', '0', '0', '', '63', '0'); +INSERT INTO `jsh_system_config` VALUES ('11', '公司test', '小李', '地址1', '12345678', null, null, '注:本单为我公司与客户约定账期内结款的依据,由客户或其单位员工签字生效,并承担法律责任。', '0', '0', '1', '0', '0', '', '0', '63', '0'); -- ---------------------------- -- Table structure for jsh_tenant @@ -892,9 +895,9 @@ CREATE TABLE `jsh_unit` ( `other_unit` varchar(50) DEFAULT NULL COMMENT '副单位', `other_unit_two` varchar(50) DEFAULT NULL COMMENT '副单位2', `other_unit_three` varchar(50) DEFAULT NULL COMMENT '副单位3', - `ratio` int(11) DEFAULT NULL COMMENT '比例', - `ratio_two` int(11) DEFAULT NULL COMMENT '比例2', - `ratio_three` int(11) DEFAULT NULL COMMENT '比例3', + `ratio` decimal(24,3) DEFAULT NULL COMMENT '比例', + `ratio_two` decimal(24,3) DEFAULT NULL COMMENT '比例2', + `ratio_three` decimal(24,3) DEFAULT NULL COMMENT '比例3', `enabled` bit(1) DEFAULT NULL COMMENT '启用', `tenant_id` bigint(20) DEFAULT NULL COMMENT '租户id', `delete_flag` varchar(1) DEFAULT '0' COMMENT '删除标记,0未删除,1删除', @@ -904,10 +907,10 @@ CREATE TABLE `jsh_unit` ( -- ---------------------------- -- Records of jsh_unit -- ---------------------------- -INSERT INTO `jsh_unit` VALUES ('15', '个/(箱=12个)', '个', '箱', null, null, '12', null, null, '', '63', '0'); -INSERT INTO `jsh_unit` VALUES ('19', '个/(盒=15个)', '个', '盒', null, null, '15', null, null, '', '63', '0'); -INSERT INTO `jsh_unit` VALUES ('20', '盒/(箱=8盒)', '盒', '箱', null, null, '8', null, null, '', '63', '0'); -INSERT INTO `jsh_unit` VALUES ('21', '瓶/(箱=12瓶)', '瓶', '箱', null, null, '12', null, null, '', '63', '0'); +INSERT INTO `jsh_unit` VALUES ('15', '个/(箱=12个)', '个', '箱', null, null, '12.000', null, null, '', '63', '0'); +INSERT INTO `jsh_unit` VALUES ('19', '个/(盒=15个)', '个', '盒', null, null, '15.000', null, null, '', '63', '0'); +INSERT INTO `jsh_unit` VALUES ('20', '盒/(箱=8盒)', '盒', '箱', null, null, '8.000', null, null, '', '63', '0'); +INSERT INTO `jsh_unit` VALUES ('21', '瓶/(箱=12瓶)', '瓶', '箱', null, null, '12.000', null, null, '', '63', '0'); -- ---------------------------- -- Table structure for jsh_user diff --git a/jshERP-boot/docs/华夏ERP数据库设计汇总.xlsx b/jshERP-boot/docs/华夏ERP数据库设计汇总.xlsx index 0b9f292a14e24c56ee5f0768c005ee011c3fd51a..84be590120bf160ec18a8e4273687ef6d41fda4b 100644 GIT binary patch delta 62386 zcmZ6yV{~0z)b}0Rwr$(CZQJ&aZQD)S*j8h+u^Ovsj7ELa>%O1yJmdXvKAeR)=UV5C z-bw!oZ2#=%w4` zl)Rc@DXEwcs)uT}h9Wo)l-dUQrMfBlI{sYwffrBz9jdUL;fPP1{)A&>?G{tUiu_8& z$l!+*+ey7u4Cld|1FVn4IF7uF0?U{SJi>#BgrM3r=r?19Wl)GQl@N#{hQu-)z@HGu z_AkL{IzV2@ur2jk@X|5n@cn83r_rVx3zs4~r!4l+Nz%>1+i{&fCxhlDCUkoHyT)`^ zXT6(hXvfxJ_uS=g^KO5C)anbf$lJE&WP|XV4w7)M z6WS4IZQ&whk#*|lEFL+r{kd`yb3ZSogTrVa5Q;;?-$g}*0H}&QI0Oa=2nY;Fl+wP4 zfi(TcUr-Q`eQ*#EbdanNM=(sFHBH}ng9Rt@iuzJmqO(AZfH<{-Oyf{wsSyhYW6gRcyn4d5Bi?eNo?B(XRORoJIp=JvTd`SCtNi8*y! zx~G@=qbOj+!Ja47aRwkkURbi{UGK$L&zCH}+EdcMoG%^Kj9C#nzdNK#WAc!-MbqhAzqrXW(=T2RmtP?f$wHj2=a2H(c>PG?G(jLrDO8cy7E{>5SSru1S-9iI?l(TZHd<~D4DflP)DZx#6K>JGZ@$?MZ0th$ zviH|t-8njNp7KB!QMbeiDOKKlSC)_6`0YdhkeK#aG}pF9-{p<@CfB}r4r}_zPb)da zsDJk@99tsUp5>C~go2-wCy?F#ky+1<;6^m+*w9ClntIttZp*qaoC67!^JcJw=7>%n11Fg@`bsdd4CWi&Bif+cEJH-TJj3MG zuFTKE2Cj2kxwPzAm8T*5`{-#G>2+bXN^o_?_2|#RH}0y$O)G6;V(p!x4;JAOg; zZ3q3+OrxGJGqAk=8uWf)%*d?xdi18DxgAYLFh_s&?Lx^rZNm3egK+Y$gI819@2JEU z*;2Z{Eh+8pTkT{4fybJ%)zaC+p~{MMeUi&+AGOrowTg3f!@3Z0mH8^PZFS(f>c>gt zi^s9euGdv;yZscr?@>TJ#?VIwX<>ix8`49Y0s(iV24N(ODg0oPj(q{?xc=4+)~@`;)_9u z@}=K;#*=8X^M>lHPyg+{58t*zeZ`JNZ$3hT~*ZXDAbpPZ1R?h>s*|Du+$7Lt6ao;DI7-ipCk|8_>6 zssE_XzoChIbk|pg_WotZQ`y6pVRY5~pnoh?7~sfisUj{KFJg{sc6`*pdg0~!vEOwo z6?K~z(DPO0W364hpgT)&JzG_<&8^i(E#(F!W|EqGp)8hydHxCE%YfUd8BT1F2ikGD zwjG6Fm8|nGF%=oXTi^>&OZGX+gTLbI6@EY&)KVGVFXg}ebZRp%4;_Vok2f#Xd+B5# zz+6}U(B#NO-Zd5dF6p2AJLF?K^zl_|ASrawP0eQm(|XW&b?NAk{<5Ps)ge6`jzuOw zAB_ff**=R8Z6d|2Egp*D!F(N;hP8=E#A?!%@=CCdv?T zH%ED~sKe1r38V>VeKdZG_BIMvnK$h?AhnC5UW?M*)`(I5_u{E%$`QQ*o}roj<>@&g zS5Bi8*ivdxGB<4F6_*H@q!Y9v3f7KcbQjmFI9SIilz)R72Wn$87{ z9{iXQ=Gr3+1qd2gOz?2*X#tP}A{%0XLJh5!J$&nP@krBfi7Ep^@oPe%UZ$KQcUT0C z#8!FQQv^ zKRkY44P~b}NVnu%-}E*(kPm&X14$lbyr9_e_GlP+gst)u91izvom@)lWI(1GO@g)* zK{fHK$>B9UAAFYavMX@<+u;Bl4nyyhk%-R1u>XA^Vgb>t20}HKMm(LIj=|!}dcpG3 z*7n%oJv_}dXhbxb1Z(O4?S921jGA)ZjnN4Lg%m1AQ5}|f@@FMCoDEO;-K{QxOD@PF zt)VmiNZ*D089068{{&tdo#KVYzGzDwtp-TomJ+D`w;d9n+krH4`@deKj$Z}`!Zo|- zXiMW$m^2c_y4q4%! zcPYN*L9w=7?ic!-qgqF&FdCEcN;p)>Xfp}eQVi8m8Er~w4VF~j^`PC;daEkxMOW@< zFbPs}!%!ePrL&K&M~kv%kw!9|bP^Ra-s16}q3WFTe1-mCFs(BJaS7DY>=dM;|7W4j z_uA~I`CReSubBU$L6eA|e$WI@sK?X&BA-k)iEOu8OX>~Z(Q&Qr5a2l zfk7IJO8IYX|GVcl9)Q7<^)krWTn+xq_+1qQXz9P75NJxkJ#(Y_-+?9bm_bD4!Yn-R za!Sr^k;YPdV<4*0G-@_Z&ywjRa=e*+C~Q)EF$Ah5$y5J1oX?80ebJOr#%z!)`!qLx z58sHUb*A$_e?67)qo;(ASR}k)W19*vEdaOZ3HPjpJfh~|(j1pYRCBU%`XPeCP3sJI zgcUZW_pDu5YvJ$B^VyL`>+8#N1QHy=+@ItK?hS5z->;TO@2{1>$8CN8-(&LH**c-3 z$D^sq*SR_1^{5hv7CuvmY{WRx5YiG(zcddNNP6@L51loRuXlDnS)%`tc6N3I0G01I zaD>w+2mJjCU0Mx&ra3snmB}>pCAn7FkGLy7IbQnN+ zOA05j{>R^+FD1T{zc>8BySi1^qN&vABo&$Gth_T@uj>pq8|Eu3xJAh%G>bK6Y9$6!By>gqt51fdyxQz8T1=O_J|yyEivEbJmG7JPGjj;Np6cZDn~w6*U-gP2rJ* z&DF?Rxwm7)jQK?=lw-@0hBGWtUul7Qa_PQ#zt`H)@s_LtA+b6L1o2ARC&SfTdaME^ zVnmKg6FnQ4j6z#v4(y=Ttk^_L@>+ZX4whKEZyNMS9Dy|Gk-YrKQR^3HgdP*WY7pk< zDJi(vII!>e1GnAC+FG5M`s!*EOzKh!(}(5D(e7w5m3Bq0)+)>&x5UN>Fk%3Xpv>kG zUAw|CBxwqp6_MsF?V39ghwq12p5orCVP{gI$$8iDQe}hVZg2&rU&)q9z8Fb3`H#5H ze5agQKGY)b09*Z~HMESiSz)@7+S{_0j*TVv<&Rn`1-5>IS^U}gyv;A938~(S0M#7( zEKCGgl%i9c!*U_{I$J|Y!S)0I0X%G~DLkRcCU*+Q@5^SoybdUv3bZksY#4DhO?Y*) zN!#4G?@#v{aAG`Lxgu9mmQ_yu^U}gLvksOV<%haWX!2F~R=0EcL=xiMvMCwk^X_0( z%LxNl#K7pfQca721x4Kv>&t8?1-L$WaKd^xT|686?{lan%&TxmxRf6N7}=O1w}~$e zr|vmKZ(?|OKsanLDEeD`wiP@(YZ6;p9xNU{%N|seI@4ca#S9y-)?0*t#I+76D)!;k zh!&b_5HHPY(>!umErR>WMvi>wNdw$E4`^hg;W8GrEXvbv@S$qPFB>#q8aGJI9`P& zG@?ht4I!sq|AuSXN0Pk#8u0l#ottZ7BUQUJOp%~*y z2$CJsvSyBip*D&&_2eo{svwhSkd{gq_Kp$3HmWu4|C-iQ5}a4_X;yYfqtP@?-w8w9 zVkQ$E-+=0otgpXLwIJ3FO&y6sKWEPUH}j?z=C*qf*AV3==Ip6D z1y2ys6k8X`5PkjvB&pF}ypUwubf;c_JyjXXv=uWHQ# zEA+qcKN~;8kEw%0>z%|CgitND`+u88Kbsaxb;_iR4N9BP4KXSF5;*-}N+lbml0-Ts zEUCNbWbW}kU6!u${BvpNReHc?|9@M6|81g7LGRElSbH$}u&FF+#ol1>T$f7^atD8Ta`DzjWYO?f%%la3&I0|Dd zrys;5h9nongjQ19elC319@!d?!X<1Qp3O|}d54cbO-KvgJKzbw-Z0gM;BR+xaxJrk zGV}{#vt7}*>2-eB$Jg)rny|s6{EGUJ4|9U$0Bs&iK2Z?R^#^(k1vw7q`VBqO zT_RipDdjB+dS^TED$hF2np(tPsr(m0&8flj@0@&lx28+y9Xw)U_s}IwQsi*;L3gLO zC&w$F)y-F}TOg501b*x|Bb_$l2ZQVvh%Yc4>5cpWGa=4>$5Cu$S1R zAS)>W{`B2qqY^aX>9m{OM&{r5yl|_4rUSw&7lNCH=wQ44_SO?;!kCJ*x@a4c8FWGj zhFqmCveJ;R@-}bV*dMohm4^__PyXF5mcm zi*C?zlgC&{r-^#2vJ~+nCx7dyt^fY1&_zQ*bvTkc0!{N{cIA175csQoRTSvA{e_;4 z=nZH{zE(iGf_LY`!(vmhpXJ|qaK`osJCxpP{d@Foq=8`FAcUbsb%Q>bl-%cK(vpYQ4oc}$! z;>c=5{tr)zv3O;p7vX*?dZpo%+!Z#JMoCZQ(;G7qZ#9eLv{rnP&d)z%i<$G#xxMAcgcHF}<=1>IDtQHrSyc+74@UEPxs2QEH~U2(@w@F=A4 z4T{L?SqlaLLB66*C-+Y3ZS@{uPotSTuG$Xi@lf>!aW{XdZQh%$@j=00mF76=N+3W$ zWYSy-nShnlUp#$3ZpqpXtU|DKJpBDFDK@CcV(28tWc$kk^@@w;g=t%_(xeB8oD{fAy<9SmUJ21#TjTAAm8!IlcsD?g~Zwx+0DM74iS-Yq1pop zI1i}m=uNgHY`SjS`i#K{trw%sD^%h0o6n|}%3Er=BtL&_DD(NZ4o^l5dmS=a*e&e( zkYr}*BX<5CVIzF$6iE~?DF1QDM%en88wc%XDYk+rvEpLWY?E%-RbjsLp(Rcgh_%W% z{1rxHW=Kqq5i4!QsQFr?MoO0(Wx@<__#7yRrM2M9Sw3gB;>)V@{1ld+%V4F|sr~7z z*@najE8!Lr3(u^fV_tRMvrtdw+sNQ=8sy=BAG_QH_?!*Q1(dL`jRw5-#TIO>ky4#s!Hh0@h)k;*SD7tVfc%PD=wLs7^z;=#6~3VXaSMB5x`d>ojB zZ>nAj4LGvRFf3;x6nvinzzlgX%ya`}Da zIWQ5xyX-zRxt_QatW$?Iang3rtnl1sR;cz#NSPzBxq1(u4v899KQP{18=xY2??ZQh zw$IH#5<~LJFK?=ae*C#U8S4-FyANeow9qwq;~x6){@R{I{Gq}PJgi{7Y4|AjjRYu9 z@r_R)=?UQ}m{7R|qOJ-=mMwXgSWZl#Lo}p3q zR2XfJse!ZBQ`tY*O-(=+ukLfnKW5Cz#8V+ARgJwtS2P7V)x_U=dn<3CVO+a>vKrTr z#w@l(M(v+3RJ8kt_;(v<(Gr8`n`6Ze1YK?{Idy@@SGFI0;LLx)|HT;4iIEj@7kFyQ3+t}-SkFa zkjXHT>AvV1U7Fo5B_TUk(AfB>S;~siqm^kd7PrSS_h%Q;_&Ys@UxNq$8jA6c`K#Wh zYvulGR5QUV<)N93mX?Ei#%=I!Rpi!jUP zN#ILWt*~}i5(J)TAM6iI#^v|R84#lE6%;Lgfc4S-gPM69A4vce2Jv}>xQN!SsAD-mr=k7d-9KOXYS}$BP#i>%{r-YW9J%&Mi z5KP2kNXBbDL!BRMpJ@g_XPI6!|22FCl09z=A#vBKqC)F!ZsdW&o4|N0na!Z$O6ki<#Bvbd_(K+2#sTU8C`%?fJV?u1vW?KRTkd$M_OcyjI5l40lf8!M z)=MEF@2LKh-(~v7Q7VY^s3Q!_$MJ<=Uqx_?N8yoj`A{z)b`wlD)E0b@YX?KYMC=Cq z3?%NZVeZljG39|TIFA@>8a3%=KhzNzC-meYa&WxM5Ll=$JBCazxc)69*sH5sb{c+;(DFQExvn$^OlrIXX}BqhAT?5M_!x# z!mSQiiIO(6^t_a-SP{XeWVP}0j}!&3EQ*rSVZ`%aGVa2Q8YOSEHHZ-}qoA6J;7r=P zSqvke;Y#W~7bJrouWXDFz=J-kVa@5%V_^#)F+Io1=h#%xVvtW7*X64n?e^MOakA{- zIPc)LW%>oCLr_VC_e3%(?oXT?sAzE#Y|9CRj`Esrtk`qVVWb@o8U>Fuo|m{HTL`pZ zovA%?+Fpz~IPWMl!p<8tWH&e;?C+YEZZG zRmYyNkN5=J#&=|BJ!EO348$Tx5kqmSxxM|Xlyo*U?p0W9U&ie3GDocVzYB-iIj|B+By|2x*I80fW{m$7XV6#ly;j zSO)3+t{h#t2tlgJlfPPqMrzTQ16RDF`W>HSIl2lJADD5rewVLG#oO_*i_=FD=b!J zC7Omi{Fgy+7Y`CEyOd!{E}l(4v02I~I#B*<%BUo(zU%n;)jcay2q%H;av`rs-}c&T@;449$=;-vMhj6 zx?CPjtrd^2&E8J2skA?G8eeZhGl4>0c>fhD3XqJ}iZkEhS5co@<{>B;o?5_#CRq8k zO&>FHBPM8a?0ZhC$CxRiZd!~j0jQ{s{to_Hn^vBR6{RLuPI&)7ABvSZg(Z7c?-;{(V6P%)E;15Wi<#b~TzzqL)=7oHG=%K(u)NzXF9-*hJBj_7@V!5; zR`&mWK8HFM$>jD70gBM?cZK_bm*>i!(u=;Im7~(Pf>vYy*hN6%ynh@AR^jyXoLI@; z*SxoqfC%S26h27+Y<1FxBksVL<09ziHLuF#J5@(q?2QmgP+b@v_)OFrw~zCnlb9}& zaxd3MF59fjtYix{?|kijr_lmKcN*eFy{j(JoKdt}H`qrPh?y%0=Qe!i{yN*;jkv}( zhc>)pc?+v@LMzO^*q&$^dEf2*F8p7@xA1=wJ`oQIcBjQv9Sr%`9QWP?Eh z3EBTo;@5b(saI-F-DK~Jx;gRR754R^D&zlvOi=o@MI>n+A471aR8T6aTq2f?dkv?7 z@OEzR%__3|bh&!03V{g59$t?cM)@=I<16!3B}ThHKyGI?$7m6#y=y7wl$}SnU8sJ@ zGOn3T-)@%{1AIWR&bdUTXY(v^+SXGvZ23zNzm-@k>t?t;XAusznNrLg6;~lts(RpR z*{YIT{zDnm_ElW`FB`8anVAe!smb)Pzn6_R8#^23AG(ijnS~*(Pu4&8l^$&TeU6{C zF>%Wnx9?=7s#Q9V)tCk&MszI`NtGL_(zlCpvrIYw(2gfb-D~QYO@4`vMt7ki>XV8B z3(u1g5|L**iU5B*-dZnO3LF0Va&rVq&{e} zlPlU@Y(nQ-2+2VlT3M=6;_~Yok+yP%?~7oQ$J(~{BM)YO_Omv(#nup8_x7HGQuTEi zoOP3dv_L<)Kbe`r*u272Fw>rnyGwV3v`ErO%Y5RXf;UZHC)y7~(m#QwppdqJ<}m25 zf>~Ols`4eNl$nR#f62zpm({0)Bn|bvVyFO>GhhcXYR>6-!~tzgr@x|auf*+>X9J%+ zD+H&JyO#1pKHi|hl!s-5obFX8KK+lt!_A?jo#mFA1p#wAa%%H5Sj<;Wn+T*8vza3Dq%U1icb2 z@ncsnv(}%;+Rx7GYUU}v7C1wxHAhmvs$Fd;>wu@ekA)a5 zz)|X{!0zUGU`K$LWT9{%M}P-VhIscr{p@5lUx*&V^B;<~ic5;|D+LDCb`a;I43sRh&Fbh}siyVxvX;DT8k~J52 z<@d@|%m`(95y3kxrh~$>v-#I0&?f3DFK&h5Nn6Q!aeSt0di6KdwO4^mwsPi60aXwq zjTfJJrGo%F6(8PbrU!gAI#5*H{X-DHsKXLQxTKW8<1fha`&$Be^QAY7P>Q-u@3{Pu zw~%xh2bQ7*60~I5Z=rKKmjFAMu(&Bf1NHl-546b8RI6L5ykbE3?cwH1xUVY`G7sBP zy+RrG<*H~`IOtj3sPbN?VW}MY)^HL@avO?reW(s!v2K91!U>T7BqhFYw~sQf0nE`V zxxpl?0chz2!2wV16L1~hP?`SP{d0%p*kAhj8*DCy%?@V&_bc#*3w5o5<(|9#lKAG9 zpM(0G3$-nuq!j2+W3TU5sy@!E4FG!K6kq9Dq|*=&4)0 z4M*D+Ov0S)LeQ@K1#ed5{;c3xPqkW0d{*${iT|tMIrE|cD))?;wDtXMZDG&mc_54^ z9PfUb7JiHpZ5p!OvyTLq>cK=M+%$f<#s6?96Pw?dY&dX1`4?|CiT!Z?c>m9m*qR9N zHG~BGgJg(qt<(>NtzVBj5WbsiJ_fq_PBg!ogTwlxLyd^1SzCWF0*AcgS$hdMRE%y7 zu=U?*(Q^o)Di3>4;h83l1PBzQ3U*m!jwo7(8dswI0=9&ZfXy-KJ5hl?*8cer;-qwR zG@a>pJ5|gqkXy8#l${}U&z$JxA*V5xoNvHs0BCP1B?3r8!eshb;Z zwb91@oMm9n{FIUPVa^kL$}v=+i-K90)@Q~qL)8uE(p}mFU$Qg6>+a<#F)5YV*BQ4e z8fE&HDTS%CCaD1Qnc>xz*m^jRh0fsePS$yjd}&0#Sd3Um_t81JG@ReoVryt5Nk}thM4{ zpG;21NN!WQxJ+1mSYNjWtjtIQ8s0Ps?W@kPh#Lrc2~!@Hm5FC}Ar4;KmaK9-rH`B6 z(pc9}B9EhCH@_>$9k7h7E-L*nBvb0JXwESXG-DWaCF6*OwP#6NtchD&Dwj5gk{oZ4-$ z+uQ9Iw1_<$2ZL{VFQ7`qSWG7lPI3C(S>~vti@EeVU7KC;WnVa$G7SfvS|n7dO2aRB z@7S#g(Mub*Q#M#^Q+}FqSzBCXvV^#%Lt>919sG_`O$ZhxCRT7JMik=qpl`#+f7xPLJla7T zilpJv2^R{*7q>flZX{*!ac{F{RkT9$H9&{o6eZO8E z`@CI{yi^~+bi{xX2(6&~>V#92wQ);XQ>`x3^N zo)GM;;Dk04VBKcbHs$u*@sD(cJMr6liqt3GY+1=5(N zeUi+NxUcW4)yzP@PJZlp;|~0S&(A#-=J&v*bZ$|VG5-|lhp#jvpbXumlVwmJHAJCZ zH4^Dxm3* zfN8N8?x3`9EWVhdbMy%$RF^V&&CoF2iXbDZ&xUo5#>#^v-uBuF0Wz@1IasBGiy1)F5 z+}^tFM24dL!;4wj_0&ym{!v0h^kvVn>0bOy!GbKa`AYKoK-NJbGlaU+A!u32deL;= z@7G_a9$@#I=55_AT4P+IZZmC@@nZQp^LwZBMi7nC6ItLIcY^|TpEf}rgJAU4aN4*? z-#zs$t7}S#^7H+zMxFKURGGEyozey|vb6TW4zL@y{3D-uY*xwR>8z9gO~9KtjCzZ7 zK1nm$Em1qJipRI%FjKbsSEsmKSAT93~dxtx;^7@=g z1SD`q56Q?NnfDBoPzE9qA=S|7_(}*^R8Q?O(btF)NQt@Om?sUbN3`pixqGm-?}L(s zinnzU7>YbR4&<)a7qTQ?8E4ZvWY*82hn( zJi3PHc04LB?~v$JSK}kHP0sVri-1J}=N;2AA5r*l%sG}kNrw)Gyelpi1C(__Y-3zZ7Fo-u@&dH_T zPWFpu!cC54Pi#7eJ(F{YY+AyGKv;he*=jM!p&}%Hz{2(OG}Jwwo`J2ZCsddYC*0#P zMYLMP%d;in9|va{3AexBQbew*P6)p>s9u2W-uyuq=%DZ3&c=%9ij|GDFzzQW0i$g< zi-Lq@N>E06$Hl%P&!J}yj8u5fHa{iTbU`52t>$-I<3~#R^rGUmL^VK3%h)?qlo&wM z#maJR+Q+!3Uo^lFdSovoQ-`nk(TZ(=2ehrH-jy&=U$CH(8hq#Vw(^>3fLX#pR5Y*I zmT`4x8LhybbZ$aI=jaG^PrSv)+Ix_)$=6+HtNE^=XU>jj0ijd`U~4pY?`*}3M5Ca8 zam|52G~=^psQ7-hc<&o>fHphkWJDs74a+a)8GRj=6MZ-6L&EH$8+EgxKBJUB`mdA5 zy&aFuy?q6q|E#8woFf^#qh^N` zo^JR zz4@{cEJ1bsW7d8)&4{%)H^3Aibu7$tjBX?V7}hqmXG;w(HoN0h^7B7K|EGU!)P^FV zS)<)0>t`JZLK!C(f?qu^|EyDo9_Sqk7Tcbjpk^4tuBSU|N7NW2DvpWhL9oE#RKuRbMXoBB?+jYS>Aj> zmIU{veK``^vWE5fLX=n$KQs944|JZjHU^?&=+pJB@0FxGLoXXx?$epGODhz*ss`dMK;ii|O6_eH>volLMAX zmx(Au!BK&ErGzIljyP?95`XCOmm;o*S&HixxIRy`nQpSAVm7H8Mz~@aMtExdPPuiN z`qb{X9VYW@Y=XW{6w*`2Yv4vbZyK(*Y;3yU=zhRu5{77wvBS82VJHw5aNVz-%3sKI zdZwxL{3_;7>pX}b);vonT{uz2{s{Qk7=;`_{Un;KI%G!EhL-TTI`I)mOjP8be5#~@ zLJzMOAIyr%T=L7fL71`rSL);`!leA4QYV$9^Yta(f8xEmY~tmoc<=Tha#qIDL$CHv zyeI3-ekTb_qHdzl%qVTu;p&&Eyv8JmEEwDKzI<1zOMPOX8K(mHH3DR-i>5-a)I7pG zHlOZ&lqW9}hu8{=gNb}Je}5`nF&ZSw3la!vOK<_7N>`SdU|I2OVFV)&9q=jL;~^W- zj352Tj~t?=uJU&~M=GlPePH8JpwNZ=f24cdqB$Hvs0KVzJY2zhyF7(oxB+0D-TLMD+w4p*{oA z#Be%8tHdEo8*NKtQJt;XqcQ!&L-KxA8V)WHQsYY_Q7s!%?*~msS!cy}IhvgMB@-ro zcyxXgG&19%H5Gx?X_jKBpH!kchP9VV+`xx|Dg*r$(g?_dS)D^2AJ&TXhd3Mku}1r*Fy2ocJHT?oaB zZ-)yfPZNiHZ3@Nlho0>wBoZYn@2rD60&*4+%DO}9&v79yK{9IUg3;~{z6;3gG%J~~ zvJW5brqGd*vpVK=hb5g0^F7S<7~o8zZ`xy2p5xq(+jjOy%Anx02)a1(xZOKYH$IcF z^6Xw#n`M(eS}gm5K0ck$A@*6eJi@1*m2;P5`s}rB`DEWBg6;m{mK-|wx2VzHu!G?~ zz2UMZPlXN+y@Sey&+|vld@;Y%sCXbb>3bs&g`mdof_UD^wAa8cD;7)qHZLv1aZuQp6mKQP|!ZswGM_m5@#wIa!NF3rc( zQsD2$<>l)IJ=`oA}e$?!WKBp^e`0eE9N4Cx3i}|feM2hkOpdrm*%8~0W?w=uQb{7>TF&(1Y^PE?ih7` zz7$9Q`Cyv21!x!zX#JqUvUXj$vkJs><3n6^E>l%NCl00{p8S3#C$|`vB-c! z(kKhmI9o4-g*o9%W2kXjh*`7zhWPMPIk7dQ_d^r*V)+Ts}GheHn-ASfTepMYffUzs@c5&37bdycEK?S=xzkuR+;R z$V20N8zUTNqk!4?t!)=_vEH7LyGSv)7caAYD`o<;2))sAqMie*5`{52<$Zk8Uo43l z0A1pfMBtE9BZVCh=g2T6%M4cb@m8Z7!{en5O69Bk@iDq{YPIM?O09-jHTWk3 z-BGA|das$S$fxYa!Opn&G_RWvR#FEmsCU1{!-R$uKSNLllQ&a(%y_mqHAQ15R7)-y z90ESsXk}-zSERKRu5lsS6@0H9RX-sc;6O=}#cyIq(PhAWQi3lQvtX|@#gygmJzTr3W7gPi$vE+ywlF@0YVOHptY!*x+99@!91je7LW`rLF&PW~bOQvQ_Oc;c-+wy=RAxRBa6pu3 z%J$U7u_PZ+TDsyWpD^EODD);P)pv|4Kj?4q%TkJW6HqahlDK%GrdFDzR1&l;N$K7BW$C%hVgmgCgm;o zPl{DUS~7Ti40rC3=Ey^6`Cn89ZTJyz^ak*%G4x-15Pc853)4^F&Q>2ky?9utA~hT6 z#(l1$c}|oPLuUA2px-Eh<$tp&nc~;q&f#JcsFOA?hdfT6_>Js88%Y`gaZ7LAwSGXa zoBf|jM}3OJ=ra4(*xf6_zH-;-=R6%p8{UNBoHRW?EzBli#eZV?fY#@oU)&7xjsKG| z4gWDFOE?7#GVNRk9>8I0!oN6ZW8lw(K2WZN&ISon5VCKR*p!ej6#&HsE=QU1;E&x3XxJGSysh*}JZn32>oi6yIdKAX^dJdjRqG*2MF&%{QySGmS- zNlGJoU(Dbcu!@);-$0ND<9+H$hDPWLZ#?#+qLouGmr%{*m<#0VxCNvA)Fyv`amkA9@SL2Ix=x?&O(L85C z>@achAk%vTuELb6KjbIMlQ"b`Cw>7#V7(F2zfs~n2tJ-1X1PC-km%k1GERoOGv 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

?m&972y`b95=$>V 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

9*0f{b|vl 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 list = depotHeadService.findInOutDetail(beginTime, endTime, type, creatorArray, organArray, + Boolean amountApprovalFlag = systemConfigService.getAmountApprovalFlag(); + List list = depotHeadService.findInOutDetail(beginTime, endTime, type, creatorArray, organArray, amountApprovalFlag, StringUtil.toNull(materialParam), depotList, oId, StringUtil.toNull(number), remark, (currentPage-1)*pageSize, pageSize); - int total = depotHeadService.findInOutDetailCount(beginTime, endTime, type, creatorArray, organArray, + int total = depotHeadService.findInOutDetailCount(beginTime, endTime, type, creatorArray, organArray, amountApprovalFlag, StringUtil.toNull(materialParam), depotList, oId, StringUtil.toNull(number), remark); map.put("total", total); //存放数据json数组 @@ -189,9 +194,10 @@ public class DepotHeadController { } beginTime = Tools.parseDayToTime(beginTime,BusinessConstants.DAY_FIRST_TIME); endTime = Tools.parseDayToTime(endTime,BusinessConstants.DAY_LAST_TIME); - List list = depotHeadService.findInOutMaterialCount(beginTime, endTime, type, StringUtil.toNull(materialParam), + Boolean amountApprovalFlag = systemConfigService.getAmountApprovalFlag(); + List list = depotHeadService.findInOutMaterialCount(beginTime, endTime, type, amountApprovalFlag, StringUtil.toNull(materialParam), depotList, oId, roleType, (currentPage-1)*pageSize, pageSize); - int total = depotHeadService.findInOutMaterialCountTotal(beginTime, endTime, type, StringUtil.toNull(materialParam), + int total = depotHeadService.findInOutMaterialCountTotal(beginTime, endTime, type, amountApprovalFlag, StringUtil.toNull(materialParam), depotList, oId, roleType); map.put("total", total); map.put("rows", list); @@ -261,10 +267,11 @@ public class DepotHeadController { String [] creatorArray = depotHeadService.getCreatorArray(roleType); beginTime = Tools.parseDayToTime(beginTime, BusinessConstants.DAY_FIRST_TIME); endTime = Tools.parseDayToTime(endTime,BusinessConstants.DAY_LAST_TIME); + Boolean amountApprovalFlag = systemConfigService.getAmountApprovalFlag(); List list = depotHeadService.findAllocationDetail(beginTime, endTime, subType, StringUtil.toNull(number), - creatorArray, StringUtil.toNull(materialParam), depotList, depotFList, remark, (currentPage-1)*pageSize, pageSize); + creatorArray, amountApprovalFlag, StringUtil.toNull(materialParam), depotList, depotFList, remark, (currentPage-1)*pageSize, pageSize); int total = depotHeadService.findAllocationDetailCount(beginTime, endTime, subType, StringUtil.toNull(number), - creatorArray, StringUtil.toNull(materialParam), depotList, depotFList, remark); + creatorArray, amountApprovalFlag, StringUtil.toNull(materialParam), depotList, depotFList, remark); map.put("rows", list); map.put("total", total); res.code = 200; diff --git a/jshERP-boot/src/main/java/com/jsh/erp/controller/DepotItemController.java b/jshERP-boot/src/main/java/com/jsh/erp/controller/DepotItemController.java index 49eb0af0..afe76342 100644 --- a/jshERP-boot/src/main/java/com/jsh/erp/controller/DepotItemController.java +++ b/jshERP-boot/src/main/java/com/jsh/erp/controller/DepotItemController.java @@ -15,6 +15,7 @@ import com.jsh.erp.service.depotItem.DepotItemService; import com.jsh.erp.service.material.MaterialService; import com.jsh.erp.service.redis.RedisService; import com.jsh.erp.service.role.RoleService; +import com.jsh.erp.service.systemConfig.SystemConfigService; import com.jsh.erp.service.unit.UnitService; import com.jsh.erp.utils.*; import io.swagger.annotations.Api; @@ -62,6 +63,9 @@ public class DepotItemController { @Resource private RoleService roleService; + @Resource + private SystemConfigService systemConfigService; + /** * 根据仓库和商品查询单据列表 * @param mId @@ -474,11 +478,12 @@ public class DepotItemController { endTime = Tools.parseDayToTime(endTime,BusinessConstants.DAY_LAST_TIME); try { String [] creatorArray = depotHeadService.getCreatorArray(roleType); + Boolean amountApprovalFlag = systemConfigService.getAmountApprovalFlag(); List dataList = depotItemService.getListWithBugOrSale(StringUtil.toNull(materialParam), - "buy", beginTime, endTime, creatorArray, (currentPage-1)*pageSize, pageSize); + "buy", beginTime, endTime, creatorArray, amountApprovalFlag, (currentPage-1)*pageSize, pageSize); String[] mpArr = mpList.split(","); int total = depotItemService.getListWithBugOrSaleCount(StringUtil.toNull(materialParam), - "buy", beginTime, endTime, creatorArray); + "buy", beginTime, endTime, creatorArray, amountApprovalFlag); map.put("total", total); //存放数据json数组 JSONArray dataArray = new JSONArray(); @@ -546,11 +551,12 @@ public class DepotItemController { endTime = Tools.parseDayToTime(endTime,BusinessConstants.DAY_LAST_TIME); try { String [] creatorArray = depotHeadService.getCreatorArray(roleType); + Boolean amountApprovalFlag = systemConfigService.getAmountApprovalFlag(); List dataList = depotItemService.getListWithBugOrSale(StringUtil.toNull(materialParam), - "sale", beginTime, endTime, creatorArray, (currentPage-1)*pageSize, pageSize); + "sale", beginTime, endTime, creatorArray, amountApprovalFlag, (currentPage-1)*pageSize, pageSize); String[] mpArr = mpList.split(","); int total = depotItemService.getListWithBugOrSaleCount(StringUtil.toNull(materialParam), - "sale", beginTime, endTime, creatorArray); + "sale", beginTime, endTime, creatorArray, amountApprovalFlag); map.put("total", total); //存放数据json数组 JSONArray dataArray = new JSONArray(); diff --git a/jshERP-boot/src/main/java/com/jsh/erp/datasource/entities/AccountHead.java b/jshERP-boot/src/main/java/com/jsh/erp/datasource/entities/AccountHead.java index 1fed1391..73cc7710 100644 --- a/jshERP-boot/src/main/java/com/jsh/erp/datasource/entities/AccountHead.java +++ b/jshERP-boot/src/main/java/com/jsh/erp/datasource/entities/AccountHead.java @@ -32,6 +32,8 @@ public class AccountHead { private String status; + private String source; + private Long tenantId; private String deleteFlag; @@ -148,6 +150,14 @@ public class AccountHead { this.status = status == null ? null : status.trim(); } + public String getSource() { + return source; + } + + public void setSource(String source) { + this.source = source == null ? null : source.trim(); + } + public Long getTenantId() { return tenantId; } diff --git a/jshERP-boot/src/main/java/com/jsh/erp/datasource/entities/AccountHeadExample.java b/jshERP-boot/src/main/java/com/jsh/erp/datasource/entities/AccountHeadExample.java index 6b78e064..d0e82df0 100644 --- a/jshERP-boot/src/main/java/com/jsh/erp/datasource/entities/AccountHeadExample.java +++ b/jshERP-boot/src/main/java/com/jsh/erp/datasource/entities/AccountHeadExample.java @@ -996,6 +996,76 @@ public class AccountHeadExample { return (Criteria) this; } + public Criteria andSourceIsNull() { + addCriterion("source is null"); + return (Criteria) this; + } + + public Criteria andSourceIsNotNull() { + addCriterion("source is not null"); + return (Criteria) this; + } + + public Criteria andSourceEqualTo(String value) { + addCriterion("source =", value, "source"); + return (Criteria) this; + } + + public Criteria andSourceNotEqualTo(String value) { + addCriterion("source <>", value, "source"); + return (Criteria) this; + } + + public Criteria andSourceGreaterThan(String value) { + addCriterion("source >", value, "source"); + return (Criteria) this; + } + + public Criteria andSourceGreaterThanOrEqualTo(String value) { + addCriterion("source >=", value, "source"); + return (Criteria) this; + } + + public Criteria andSourceLessThan(String value) { + addCriterion("source <", value, "source"); + return (Criteria) this; + } + + public Criteria andSourceLessThanOrEqualTo(String value) { + addCriterion("source <=", value, "source"); + return (Criteria) this; + } + + public Criteria andSourceLike(String value) { + addCriterion("source like", value, "source"); + return (Criteria) this; + } + + public Criteria andSourceNotLike(String value) { + addCriterion("source not like", value, "source"); + return (Criteria) this; + } + + public Criteria andSourceIn(List values) { + addCriterion("source in", values, "source"); + return (Criteria) this; + } + + public Criteria andSourceNotIn(List values) { + addCriterion("source not in", values, "source"); + return (Criteria) this; + } + + public Criteria andSourceBetween(String value1, String value2) { + addCriterion("source between", value1, value2, "source"); + return (Criteria) this; + } + + public Criteria andSourceNotBetween(String value1, String value2) { + addCriterion("source not between", value1, value2, "source"); + return (Criteria) this; + } + public Criteria andTenantIdIsNull() { addCriterion("tenant_id is null"); return (Criteria) this; diff --git a/jshERP-boot/src/main/java/com/jsh/erp/datasource/entities/DepotHead.java b/jshERP-boot/src/main/java/com/jsh/erp/datasource/entities/DepotHead.java index f9c9cfcd..5dc86c77 100644 --- a/jshERP-boot/src/main/java/com/jsh/erp/datasource/entities/DepotHead.java +++ b/jshERP-boot/src/main/java/com/jsh/erp/datasource/entities/DepotHead.java @@ -58,6 +58,8 @@ public class DepotHead { private String purchaseStatus; + private String source; + private String linkNumber; private Long tenantId; @@ -280,6 +282,14 @@ public class DepotHead { this.purchaseStatus = purchaseStatus == null ? null : purchaseStatus.trim(); } + public String getSource() { + return source; + } + + public void setSource(String source) { + this.source = source == null ? null : source.trim(); + } + public String getLinkNumber() { return linkNumber; } diff --git a/jshERP-boot/src/main/java/com/jsh/erp/datasource/entities/DepotHeadExample.java b/jshERP-boot/src/main/java/com/jsh/erp/datasource/entities/DepotHeadExample.java index cea753c7..1b0b9dad 100644 --- a/jshERP-boot/src/main/java/com/jsh/erp/datasource/entities/DepotHeadExample.java +++ b/jshERP-boot/src/main/java/com/jsh/erp/datasource/entities/DepotHeadExample.java @@ -1856,6 +1856,76 @@ public class DepotHeadExample { return (Criteria) this; } + public Criteria andSourceIsNull() { + addCriterion("source is null"); + return (Criteria) this; + } + + public Criteria andSourceIsNotNull() { + addCriterion("source is not null"); + return (Criteria) this; + } + + public Criteria andSourceEqualTo(String value) { + addCriterion("source =", value, "source"); + return (Criteria) this; + } + + public Criteria andSourceNotEqualTo(String value) { + addCriterion("source <>", value, "source"); + return (Criteria) this; + } + + public Criteria andSourceGreaterThan(String value) { + addCriterion("source >", value, "source"); + return (Criteria) this; + } + + public Criteria andSourceGreaterThanOrEqualTo(String value) { + addCriterion("source >=", value, "source"); + return (Criteria) this; + } + + public Criteria andSourceLessThan(String value) { + addCriterion("source <", value, "source"); + return (Criteria) this; + } + + public Criteria andSourceLessThanOrEqualTo(String value) { + addCriterion("source <=", value, "source"); + return (Criteria) this; + } + + public Criteria andSourceLike(String value) { + addCriterion("source like", value, "source"); + return (Criteria) this; + } + + public Criteria andSourceNotLike(String value) { + addCriterion("source not like", value, "source"); + return (Criteria) this; + } + + public Criteria andSourceIn(List values) { + addCriterion("source in", values, "source"); + return (Criteria) this; + } + + public Criteria andSourceNotIn(List values) { + addCriterion("source not in", values, "source"); + return (Criteria) this; + } + + public Criteria andSourceBetween(String value1, String value2) { + addCriterion("source between", value1, value2, "source"); + return (Criteria) this; + } + + public Criteria andSourceNotBetween(String value1, String value2) { + addCriterion("source not between", value1, value2, "source"); + return (Criteria) this; + } + public Criteria andLinkNumberIsNull() { addCriterion("link_number is null"); return (Criteria) this; diff --git a/jshERP-boot/src/main/java/com/jsh/erp/datasource/entities/SystemConfig.java b/jshERP-boot/src/main/java/com/jsh/erp/datasource/entities/SystemConfig.java index e304da5a..07e0fdae 100644 --- a/jshERP-boot/src/main/java/com/jsh/erp/datasource/entities/SystemConfig.java +++ b/jshERP-boot/src/main/java/com/jsh/erp/datasource/entities/SystemConfig.java @@ -29,6 +29,8 @@ public class SystemConfig { private String multiBillType; + private String amountApprovalFlag; + private Long tenantId; private String deleteFlag; @@ -145,6 +147,14 @@ public class SystemConfig { this.multiBillType = multiBillType == null ? null : multiBillType.trim(); } + public String getAmountApprovalFlag() { + return amountApprovalFlag; + } + + public void setAmountApprovalFlag(String amountApprovalFlag) { + this.amountApprovalFlag = amountApprovalFlag == null ? null : amountApprovalFlag.trim(); + } + public Long getTenantId() { return tenantId; } diff --git a/jshERP-boot/src/main/java/com/jsh/erp/datasource/entities/SystemConfigExample.java b/jshERP-boot/src/main/java/com/jsh/erp/datasource/entities/SystemConfigExample.java index caff7f4f..713b6e62 100644 --- a/jshERP-boot/src/main/java/com/jsh/erp/datasource/entities/SystemConfigExample.java +++ b/jshERP-boot/src/main/java/com/jsh/erp/datasource/entities/SystemConfigExample.java @@ -1074,6 +1074,76 @@ public class SystemConfigExample { return (Criteria) this; } + public Criteria andAmountApprovalFlagIsNull() { + addCriterion("amount_approval_flag is null"); + return (Criteria) this; + } + + public Criteria andAmountApprovalFlagIsNotNull() { + addCriterion("amount_approval_flag is not null"); + return (Criteria) this; + } + + public Criteria andAmountApprovalFlagEqualTo(String value) { + addCriterion("amount_approval_flag =", value, "amountApprovalFlag"); + return (Criteria) this; + } + + public Criteria andAmountApprovalFlagNotEqualTo(String value) { + addCriterion("amount_approval_flag <>", value, "amountApprovalFlag"); + return (Criteria) this; + } + + public Criteria andAmountApprovalFlagGreaterThan(String value) { + addCriterion("amount_approval_flag >", value, "amountApprovalFlag"); + return (Criteria) this; + } + + public Criteria andAmountApprovalFlagGreaterThanOrEqualTo(String value) { + addCriterion("amount_approval_flag >=", value, "amountApprovalFlag"); + return (Criteria) this; + } + + public Criteria andAmountApprovalFlagLessThan(String value) { + addCriterion("amount_approval_flag <", value, "amountApprovalFlag"); + return (Criteria) this; + } + + public Criteria andAmountApprovalFlagLessThanOrEqualTo(String value) { + addCriterion("amount_approval_flag <=", value, "amountApprovalFlag"); + return (Criteria) this; + } + + public Criteria andAmountApprovalFlagLike(String value) { + addCriterion("amount_approval_flag like", value, "amountApprovalFlag"); + return (Criteria) this; + } + + public Criteria andAmountApprovalFlagNotLike(String value) { + addCriterion("amount_approval_flag not like", value, "amountApprovalFlag"); + return (Criteria) this; + } + + public Criteria andAmountApprovalFlagIn(List values) { + addCriterion("amount_approval_flag in", values, "amountApprovalFlag"); + return (Criteria) this; + } + + public Criteria andAmountApprovalFlagNotIn(List values) { + addCriterion("amount_approval_flag not in", values, "amountApprovalFlag"); + return (Criteria) this; + } + + public Criteria andAmountApprovalFlagBetween(String value1, String value2) { + addCriterion("amount_approval_flag between", value1, value2, "amountApprovalFlag"); + return (Criteria) this; + } + + public Criteria andAmountApprovalFlagNotBetween(String value1, String value2) { + addCriterion("amount_approval_flag not between", value1, value2, "amountApprovalFlag"); + return (Criteria) this; + } + public Criteria andTenantIdIsNull() { addCriterion("tenant_id is null"); return (Criteria) this; diff --git a/jshERP-boot/src/main/java/com/jsh/erp/datasource/entities/Unit.java b/jshERP-boot/src/main/java/com/jsh/erp/datasource/entities/Unit.java index c91b6eee..449692c3 100644 --- a/jshERP-boot/src/main/java/com/jsh/erp/datasource/entities/Unit.java +++ b/jshERP-boot/src/main/java/com/jsh/erp/datasource/entities/Unit.java @@ -1,5 +1,7 @@ package com.jsh.erp.datasource.entities; +import java.math.BigDecimal; + public class Unit { private Long id; @@ -13,11 +15,11 @@ public class Unit { private String otherUnitThree; - private Integer ratio; + private BigDecimal ratio; - private Integer ratioTwo; + private BigDecimal ratioTwo; - private Integer ratioThree; + private BigDecimal ratioThree; private Boolean enabled; @@ -73,27 +75,27 @@ public class Unit { this.otherUnitThree = otherUnitThree == null ? null : otherUnitThree.trim(); } - public Integer getRatio() { + public BigDecimal getRatio() { return ratio; } - public void setRatio(Integer ratio) { + public void setRatio(BigDecimal ratio) { this.ratio = ratio; } - public Integer getRatioTwo() { + public BigDecimal getRatioTwo() { return ratioTwo; } - public void setRatioTwo(Integer ratioTwo) { + public void setRatioTwo(BigDecimal ratioTwo) { this.ratioTwo = ratioTwo; } - public Integer getRatioThree() { + public BigDecimal getRatioThree() { return ratioThree; } - public void setRatioThree(Integer ratioThree) { + public void setRatioThree(BigDecimal ratioThree) { this.ratioThree = ratioThree; } diff --git a/jshERP-boot/src/main/java/com/jsh/erp/datasource/entities/UnitExample.java b/jshERP-boot/src/main/java/com/jsh/erp/datasource/entities/UnitExample.java index 39875b86..388e465b 100644 --- a/jshERP-boot/src/main/java/com/jsh/erp/datasource/entities/UnitExample.java +++ b/jshERP-boot/src/main/java/com/jsh/erp/datasource/entities/UnitExample.java @@ -1,5 +1,6 @@ package com.jsh.erp.datasource.entities; +import java.math.BigDecimal; import java.util.ArrayList; import java.util.List; @@ -524,52 +525,52 @@ public class UnitExample { return (Criteria) this; } - public Criteria andRatioEqualTo(Integer value) { + public Criteria andRatioEqualTo(BigDecimal value) { addCriterion("ratio =", value, "ratio"); return (Criteria) this; } - public Criteria andRatioNotEqualTo(Integer value) { + public Criteria andRatioNotEqualTo(BigDecimal value) { addCriterion("ratio <>", value, "ratio"); return (Criteria) this; } - public Criteria andRatioGreaterThan(Integer value) { + public Criteria andRatioGreaterThan(BigDecimal value) { addCriterion("ratio >", value, "ratio"); return (Criteria) this; } - public Criteria andRatioGreaterThanOrEqualTo(Integer value) { + public Criteria andRatioGreaterThanOrEqualTo(BigDecimal value) { addCriterion("ratio >=", value, "ratio"); return (Criteria) this; } - public Criteria andRatioLessThan(Integer value) { + public Criteria andRatioLessThan(BigDecimal value) { addCriterion("ratio <", value, "ratio"); return (Criteria) this; } - public Criteria andRatioLessThanOrEqualTo(Integer value) { + public Criteria andRatioLessThanOrEqualTo(BigDecimal value) { addCriterion("ratio <=", value, "ratio"); return (Criteria) this; } - public Criteria andRatioIn(List values) { + public Criteria andRatioIn(List values) { addCriterion("ratio in", values, "ratio"); return (Criteria) this; } - public Criteria andRatioNotIn(List values) { + public Criteria andRatioNotIn(List values) { addCriterion("ratio not in", values, "ratio"); return (Criteria) this; } - public Criteria andRatioBetween(Integer value1, Integer value2) { + public Criteria andRatioBetween(BigDecimal value1, BigDecimal value2) { addCriterion("ratio between", value1, value2, "ratio"); return (Criteria) this; } - public Criteria andRatioNotBetween(Integer value1, Integer value2) { + public Criteria andRatioNotBetween(BigDecimal value1, BigDecimal value2) { addCriterion("ratio not between", value1, value2, "ratio"); return (Criteria) this; } @@ -584,52 +585,52 @@ public class UnitExample { return (Criteria) this; } - public Criteria andRatioTwoEqualTo(Integer value) { + public Criteria andRatioTwoEqualTo(BigDecimal value) { addCriterion("ratio_two =", value, "ratioTwo"); return (Criteria) this; } - public Criteria andRatioTwoNotEqualTo(Integer value) { + public Criteria andRatioTwoNotEqualTo(BigDecimal value) { addCriterion("ratio_two <>", value, "ratioTwo"); return (Criteria) this; } - public Criteria andRatioTwoGreaterThan(Integer value) { + public Criteria andRatioTwoGreaterThan(BigDecimal value) { addCriterion("ratio_two >", value, "ratioTwo"); return (Criteria) this; } - public Criteria andRatioTwoGreaterThanOrEqualTo(Integer value) { + public Criteria andRatioTwoGreaterThanOrEqualTo(BigDecimal value) { addCriterion("ratio_two >=", value, "ratioTwo"); return (Criteria) this; } - public Criteria andRatioTwoLessThan(Integer value) { + public Criteria andRatioTwoLessThan(BigDecimal value) { addCriterion("ratio_two <", value, "ratioTwo"); return (Criteria) this; } - public Criteria andRatioTwoLessThanOrEqualTo(Integer value) { + public Criteria andRatioTwoLessThanOrEqualTo(BigDecimal value) { addCriterion("ratio_two <=", value, "ratioTwo"); return (Criteria) this; } - public Criteria andRatioTwoIn(List values) { + public Criteria andRatioTwoIn(List values) { addCriterion("ratio_two in", values, "ratioTwo"); return (Criteria) this; } - public Criteria andRatioTwoNotIn(List values) { + public Criteria andRatioTwoNotIn(List values) { addCriterion("ratio_two not in", values, "ratioTwo"); return (Criteria) this; } - public Criteria andRatioTwoBetween(Integer value1, Integer value2) { + public Criteria andRatioTwoBetween(BigDecimal value1, BigDecimal value2) { addCriterion("ratio_two between", value1, value2, "ratioTwo"); return (Criteria) this; } - public Criteria andRatioTwoNotBetween(Integer value1, Integer value2) { + public Criteria andRatioTwoNotBetween(BigDecimal value1, BigDecimal value2) { addCriterion("ratio_two not between", value1, value2, "ratioTwo"); return (Criteria) this; } @@ -644,52 +645,52 @@ public class UnitExample { return (Criteria) this; } - public Criteria andRatioThreeEqualTo(Integer value) { + public Criteria andRatioThreeEqualTo(BigDecimal value) { addCriterion("ratio_three =", value, "ratioThree"); return (Criteria) this; } - public Criteria andRatioThreeNotEqualTo(Integer value) { + public Criteria andRatioThreeNotEqualTo(BigDecimal value) { addCriterion("ratio_three <>", value, "ratioThree"); return (Criteria) this; } - public Criteria andRatioThreeGreaterThan(Integer value) { + public Criteria andRatioThreeGreaterThan(BigDecimal value) { addCriterion("ratio_three >", value, "ratioThree"); return (Criteria) this; } - public Criteria andRatioThreeGreaterThanOrEqualTo(Integer value) { + public Criteria andRatioThreeGreaterThanOrEqualTo(BigDecimal value) { addCriterion("ratio_three >=", value, "ratioThree"); return (Criteria) this; } - public Criteria andRatioThreeLessThan(Integer value) { + public Criteria andRatioThreeLessThan(BigDecimal value) { addCriterion("ratio_three <", value, "ratioThree"); return (Criteria) this; } - public Criteria andRatioThreeLessThanOrEqualTo(Integer value) { + public Criteria andRatioThreeLessThanOrEqualTo(BigDecimal value) { addCriterion("ratio_three <=", value, "ratioThree"); return (Criteria) this; } - public Criteria andRatioThreeIn(List values) { + public Criteria andRatioThreeIn(List values) { addCriterion("ratio_three in", values, "ratioThree"); return (Criteria) this; } - public Criteria andRatioThreeNotIn(List values) { + public Criteria andRatioThreeNotIn(List values) { addCriterion("ratio_three not in", values, "ratioThree"); return (Criteria) this; } - public Criteria andRatioThreeBetween(Integer value1, Integer value2) { + public Criteria andRatioThreeBetween(BigDecimal value1, BigDecimal value2) { addCriterion("ratio_three between", value1, value2, "ratioThree"); return (Criteria) this; } - public Criteria andRatioThreeNotBetween(Integer value1, Integer value2) { + public Criteria andRatioThreeNotBetween(BigDecimal value1, BigDecimal value2) { addCriterion("ratio_three not between", value1, value2, "ratioThree"); return (Criteria) this; } diff --git a/jshERP-boot/src/main/java/com/jsh/erp/datasource/mappers/DepotHeadMapperEx.java b/jshERP-boot/src/main/java/com/jsh/erp/datasource/mappers/DepotHeadMapperEx.java index c2c6d639..4d1f2530 100644 --- a/jshERP-boot/src/main/java/com/jsh/erp/datasource/mappers/DepotHeadMapperEx.java +++ b/jshERP-boot/src/main/java/com/jsh/erp/datasource/mappers/DepotHeadMapperEx.java @@ -69,6 +69,7 @@ public interface DepotHeadMapperEx { @Param("type") String type, @Param("creatorArray") String[] creatorArray, @Param("organArray") String[] organArray, + @Param("amountApprovalFlag") Boolean amountApprovalFlag, @Param("materialParam") String materialParam, @Param("depotList") List depotList, @Param("oId") Integer oId, @@ -83,6 +84,7 @@ public interface DepotHeadMapperEx { @Param("type") String type, @Param("creatorArray") String[] creatorArray, @Param("organArray") String[] organArray, + @Param("amountApprovalFlag") Boolean amountApprovalFlag, @Param("materialParam") String materialParam, @Param("depotList") List depotList, @Param("oId") Integer oId, @@ -93,6 +95,7 @@ public interface DepotHeadMapperEx { @Param("beginTime") String beginTime, @Param("endTime") String endTime, @Param("type") String type, + @Param("amountApprovalFlag") Boolean amountApprovalFlag, @Param("materialParam") String materialParam, @Param("depotList") List depotList, @Param("oId") Integer oId, @@ -105,6 +108,7 @@ public interface DepotHeadMapperEx { @Param("beginTime") String beginTime, @Param("endTime") String endTime, @Param("type") String type, + @Param("amountApprovalFlag") Boolean amountApprovalFlag, @Param("materialParam") String materialParam, @Param("depotList") List depotList, @Param("oId") Integer oId, @@ -117,6 +121,7 @@ public interface DepotHeadMapperEx { @Param("subType") String subType, @Param("number") String number, @Param("creatorArray") String[] creatorArray, + @Param("amountApprovalFlag") Boolean amountApprovalFlag, @Param("materialParam") String materialParam, @Param("depotList") List depotList, @Param("depotFList") List depotFList, @@ -130,6 +135,7 @@ public interface DepotHeadMapperEx { @Param("subType") String subType, @Param("number") String number, @Param("creatorArray") String[] creatorArray, + @Param("amountApprovalFlag") Boolean amountApprovalFlag, @Param("materialParam") String materialParam, @Param("depotList") List depotList, @Param("depotFList") List depotFList, @@ -206,14 +212,16 @@ public interface DepotHeadMapperEx { @Param("hasSupplier") Integer hasSupplier, @Param("beginTime") String beginTime, @Param("endTime") String endTime, - @Param("creatorArray") String[] creatorArray); + @Param("creatorArray") String[] creatorArray, + @Param("amountApprovalFlag") Boolean amountApprovalFlag); BigDecimal getBuyAndSaleRetailStatistics( @Param("type") String type, @Param("subType") String subType, @Param("beginTime") String beginTime, @Param("endTime") String endTime, - @Param("creatorArray") String[] creatorArray); + @Param("creatorArray") String[] creatorArray, + @Param("amountApprovalFlag") Boolean amountApprovalFlag); List debtList( @Param("organId") Long organId, diff --git a/jshERP-boot/src/main/java/com/jsh/erp/datasource/mappers/DepotItemMapperEx.java b/jshERP-boot/src/main/java/com/jsh/erp/datasource/mappers/DepotItemMapperEx.java index 7f69e895..f0ac6e07 100644 --- a/jshERP-boot/src/main/java/com/jsh/erp/datasource/mappers/DepotItemMapperEx.java +++ b/jshERP-boot/src/main/java/com/jsh/erp/datasource/mappers/DepotItemMapperEx.java @@ -68,6 +68,7 @@ public interface DepotItemMapperEx { @Param("beginTime") String beginTime, @Param("endTime") String endTime, @Param("creatorArray") String[] creatorArray, + @Param("amountApprovalFlag") Boolean amountApprovalFlag, @Param("offset") Integer offset, @Param("rows") Integer rows); @@ -76,7 +77,8 @@ public interface DepotItemMapperEx { @Param("billType") String billType, @Param("beginTime") String beginTime, @Param("endTime") String endTime, - @Param("creatorArray") String[] creatorArray); + @Param("creatorArray") String[] creatorArray, + @Param("amountApprovalFlag") Boolean amountApprovalFlag); BigDecimal buyOrSaleNumber( @Param("type") String type, @@ -101,14 +103,16 @@ public interface DepotItemMapperEx { @Param("subType") String subType, @Param("beginTime") String beginTime, @Param("endTime") String endTime, - @Param("creatorArray") String[] creatorArray); + @Param("creatorArray") String[] creatorArray, + @Param("amountApprovalFlag") Boolean amountApprovalFlag); BigDecimal inOrOutRetailPrice( @Param("type") String type, @Param("subType") String subType, @Param("beginTime") String beginTime, @Param("endTime") String endTime, - @Param("creatorArray") String[] creatorArray); + @Param("creatorArray") String[] creatorArray, + @Param("amountApprovalFlag") Boolean amountApprovalFlag); BigDecimal getStockCheckSumByDepotList( @Param("depotList") List depotList, diff --git a/jshERP-boot/src/main/java/com/jsh/erp/service/account/AccountService.java b/jshERP-boot/src/main/java/com/jsh/erp/service/account/AccountService.java index b651819f..6b39874c 100644 --- a/jshERP-boot/src/main/java/com/jsh/erp/service/account/AccountService.java +++ b/jshERP-boot/src/main/java/com/jsh/erp/service/account/AccountService.java @@ -10,6 +10,7 @@ import com.jsh.erp.datasource.vo.AccountVo4List; import com.jsh.erp.exception.BusinessRunTimeException; import com.jsh.erp.exception.JshException; import com.jsh.erp.service.log.LogService; +import com.jsh.erp.service.systemConfig.SystemConfigService; import com.jsh.erp.service.user.UserService; import com.jsh.erp.utils.StringUtil; import com.jsh.erp.utils.Tools; @@ -55,6 +56,8 @@ public class AccountService { private LogService logService; @Resource private UserService userService; + @Resource + private SystemConfigService systemConfigService; public Account getAccount(long id) throws Exception{ return accountMapper.selectByPrimaryKey(id); @@ -105,16 +108,19 @@ public class AccountService { JshException.readFail(logger, e); } String timeStr = Tools.getCurrentMonth(); + Boolean apprFlag = systemConfigService.getAmountApprovalFlag(); if (null != list && null !=timeStr) { for (AccountVo4List al : list) { DecimalFormat df = new DecimalFormat(".##"); - BigDecimal thisMonthAmount = getAccountSum(al.getId(), timeStr, "month").add(getAccountSumByHead(al.getId(), timeStr, "month")).add(getAccountSumByDetail(al.getId(), timeStr, "month")).add(getManyAccountSum(al.getId(), timeStr, "month")); + BigDecimal thisMonthAmount = getAccountSum(al.getId(), timeStr, "month", apprFlag).add(getAccountSumByHead(al.getId(), timeStr, "month", apprFlag)) + .add(getAccountSumByDetail(al.getId(), timeStr, "month", apprFlag)).add(getManyAccountSum(al.getId(), timeStr, "month", apprFlag)); String thisMonthAmountFmt = "0"; if ((thisMonthAmount.compareTo(BigDecimal.ZERO))!=0) { thisMonthAmountFmt = df.format(thisMonthAmount); } al.setThisMonthAmount(thisMonthAmountFmt); //本月发生额 - BigDecimal currentAmount = getAccountSum(al.getId(), "", "month").add(getAccountSumByHead(al.getId(), "", "month")).add(getAccountSumByDetail(al.getId(), "", "month")).add(getManyAccountSum(al.getId(), "", "month")) .add(al.getInitialAmount()) ; + BigDecimal currentAmount = getAccountSum(al.getId(), "", "month", apprFlag).add(getAccountSumByHead(al.getId(), "", "month", apprFlag)) + .add(getAccountSumByDetail(al.getId(), "", "month", apprFlag)).add(getManyAccountSum(al.getId(), "", "month", apprFlag)) .add(al.getInitialAmount()) ; al.setCurrentAmount(currentAmount); resList.add(al); } @@ -273,28 +279,32 @@ public class AccountService { * @param id * @return */ - public BigDecimal getAccountSum(Long id, String timeStr, String type) throws Exception{ + public BigDecimal getAccountSum(Long id, String timeStr, String type, Boolean apprFlag) throws Exception{ BigDecimal accountSum = BigDecimal.ZERO; try { DepotHeadExample example = new DepotHeadExample(); + DepotHeadExample.Criteria criteria = example.createCriteria(); if (!timeStr.equals("")) { Date bTime = StringUtil.getDateByString(Tools.firstDayOfMonth(timeStr) + BusinessConstants.DAY_FIRST_TIME, null); Date eTime = StringUtil.getDateByString(Tools.lastDayOfMonth(timeStr) + BusinessConstants.DAY_LAST_TIME, null); Date mTime = StringUtil.getDateByString(Tools.firstDayOfMonth(timeStr) + BusinessConstants.DAY_FIRST_TIME, null); if (type.equals("month")) { - example.createCriteria().andAccountIdEqualTo(id).andPayTypeNotEqualTo("预付款") + criteria.andAccountIdEqualTo(id).andPayTypeNotEqualTo("预付款") .andOperTimeGreaterThanOrEqualTo(bTime).andOperTimeLessThanOrEqualTo(eTime) .andDeleteFlagNotEqualTo(BusinessConstants.DELETE_FLAG_DELETED); } else if (type.equals("date")) { - example.createCriteria().andAccountIdEqualTo(id).andPayTypeNotEqualTo("预付款") + criteria.andAccountIdEqualTo(id).andPayTypeNotEqualTo("预付款") .andOperTimeLessThanOrEqualTo(mTime).andDeleteFlagNotEqualTo(BusinessConstants.DELETE_FLAG_DELETED); } } else { - example.createCriteria().andAccountIdEqualTo(id).andPayTypeNotEqualTo("预付款") + criteria.andAccountIdEqualTo(id).andPayTypeNotEqualTo("预付款") .andDeleteFlagNotEqualTo(BusinessConstants.DELETE_FLAG_DELETED); } List dataList=null; try{ + if(apprFlag) { + criteria.andStatusEqualTo("1"); + } dataList = depotHeadMapper.selectByExample(example); }catch(Exception e){ JshException.readFail(logger, e); @@ -318,29 +328,33 @@ public class AccountService { * @param id * @return */ - public BigDecimal getAccountSumByHead(Long id, String timeStr, String type) throws Exception{ + public BigDecimal getAccountSumByHead(Long id, String timeStr, String type, Boolean apprFlag) throws Exception{ BigDecimal accountSum = BigDecimal.ZERO; try { AccountHeadExample example = new AccountHeadExample(); + AccountHeadExample.Criteria criteria = example.createCriteria(); if (!timeStr.equals("")) { Date bTime = StringUtil.getDateByString(Tools.firstDayOfMonth(timeStr) + BusinessConstants.DAY_FIRST_TIME, null); Date eTime = StringUtil.getDateByString(Tools.lastDayOfMonth(timeStr) + BusinessConstants.DAY_LAST_TIME, null); Date mTime = StringUtil.getDateByString(Tools.firstDayOfMonth(timeStr) + BusinessConstants.DAY_FIRST_TIME, null); if (type.equals("month")) { - example.createCriteria().andAccountIdEqualTo(id) + criteria.andAccountIdEqualTo(id) .andBillTimeGreaterThanOrEqualTo(bTime).andBillTimeLessThanOrEqualTo(eTime) .andDeleteFlagNotEqualTo(BusinessConstants.DELETE_FLAG_DELETED); } else if (type.equals("date")) { - example.createCriteria().andAccountIdEqualTo(id) + criteria.andAccountIdEqualTo(id) .andBillTimeLessThanOrEqualTo(mTime) .andDeleteFlagNotEqualTo(BusinessConstants.DELETE_FLAG_DELETED); } } else { - example.createCriteria().andAccountIdEqualTo(id) + criteria.andAccountIdEqualTo(id) .andDeleteFlagNotEqualTo(BusinessConstants.DELETE_FLAG_DELETED); } List dataList=null; try{ + if(apprFlag) { + criteria.andStatusEqualTo("1"); + } dataList = accountHeadMapper.selectByExample(example); }catch(Exception e){ JshException.readFail(logger, e); @@ -364,24 +378,28 @@ public class AccountService { * @param id * @return */ - public BigDecimal getAccountSumByDetail(Long id, String timeStr, String type)throws Exception { + public BigDecimal getAccountSumByDetail(Long id, String timeStr, String type, Boolean apprFlag)throws Exception { BigDecimal accountSum =BigDecimal.ZERO ; try { AccountHeadExample example = new AccountHeadExample(); + AccountHeadExample.Criteria criteria = example.createCriteria(); if (!timeStr.equals("")) { Date bTime = StringUtil.getDateByString(Tools.firstDayOfMonth(timeStr) + BusinessConstants.DAY_FIRST_TIME, null); Date eTime = StringUtil.getDateByString(Tools.lastDayOfMonth(timeStr) + BusinessConstants.DAY_LAST_TIME, null); Date mTime = StringUtil.getDateByString(Tools.firstDayOfMonth(timeStr) + BusinessConstants.DAY_FIRST_TIME, null); if (type.equals("month")) { - example.createCriteria().andBillTimeGreaterThanOrEqualTo(bTime).andBillTimeLessThanOrEqualTo(eTime) + criteria.andBillTimeGreaterThanOrEqualTo(bTime).andBillTimeLessThanOrEqualTo(eTime) .andDeleteFlagNotEqualTo(BusinessConstants.DELETE_FLAG_DELETED); } else if (type.equals("date")) { - example.createCriteria().andBillTimeLessThanOrEqualTo(mTime) + criteria.andBillTimeLessThanOrEqualTo(mTime) .andDeleteFlagNotEqualTo(BusinessConstants.DELETE_FLAG_DELETED); } } List dataList=null; try{ + if(apprFlag) { + criteria.andStatusEqualTo("1"); + } dataList = accountHeadMapper.selectByExample(example); }catch(Exception e){ JshException.readFail(logger, e); @@ -423,20 +441,21 @@ public class AccountService { * @param id * @return */ - public BigDecimal getManyAccountSum(Long id, String timeStr, String type)throws Exception { + public BigDecimal getManyAccountSum(Long id, String timeStr, String type, Boolean apprFlag)throws Exception { BigDecimal accountSum = BigDecimal.ZERO; try { DepotHeadExample example = new DepotHeadExample(); + DepotHeadExample.Criteria criteria = example.createCriteria(); if (!timeStr.equals("")) { Date bTime = StringUtil.getDateByString(Tools.firstDayOfMonth(timeStr) + BusinessConstants.DAY_FIRST_TIME, null); Date eTime = StringUtil.getDateByString(Tools.lastDayOfMonth(timeStr) + BusinessConstants.DAY_LAST_TIME, null); Date mTime = StringUtil.getDateByString(Tools.firstDayOfMonth(timeStr) + BusinessConstants.DAY_FIRST_TIME, null); if (type.equals("month")) { - example.createCriteria().andAccountIdListLike("%" +id.toString() + "%") + criteria.andAccountIdListLike("%" +id.toString() + "%") .andOperTimeGreaterThanOrEqualTo(bTime).andOperTimeLessThanOrEqualTo(eTime) .andDeleteFlagNotEqualTo(BusinessConstants.DELETE_FLAG_DELETED); } else if (type.equals("date")) { - example.createCriteria().andAccountIdListLike("%" +id.toString() + "%") + criteria.andAccountIdListLike("%" +id.toString() + "%") .andOperTimeLessThanOrEqualTo(mTime) .andDeleteFlagNotEqualTo(BusinessConstants.DELETE_FLAG_DELETED); } @@ -446,6 +465,9 @@ public class AccountService { } List dataList=null; try{ + if(apprFlag) { + criteria.andStatusEqualTo("1"); + } dataList = depotHeadMapper.selectByExample(example); }catch(Exception e){ JshException.readFail(logger, e); @@ -548,12 +570,13 @@ public class AccountService { String timeStr = Tools.getCurrentMonth(); BigDecimal allMonthAmount = BigDecimal.ZERO; BigDecimal allCurrentAmount = BigDecimal.ZERO; + Boolean apprFlag = systemConfigService.getAmountApprovalFlag(); if (null != list && null !=timeStr) { for (Account a : list) { - BigDecimal monthAmount = getAccountSum(a.getId(), timeStr, "month").add(getAccountSumByHead(a.getId(), timeStr, "month")) - .add(getAccountSumByDetail(a.getId(), timeStr, "month")).add(getManyAccountSum(a.getId(), timeStr, "month")); - BigDecimal currentAmount = getAccountSum(a.getId(), "", "month").add(getAccountSumByHead(a.getId(), "", "month")) - .add(getAccountSumByDetail(a.getId(), "", "month")).add(getManyAccountSum(a.getId(), "", "month")).add(a.getInitialAmount()); + BigDecimal monthAmount = getAccountSum(a.getId(), timeStr, "month", apprFlag).add(getAccountSumByHead(a.getId(), timeStr, "month", apprFlag)) + .add(getAccountSumByDetail(a.getId(), timeStr, "month", apprFlag)).add(getManyAccountSum(a.getId(), timeStr, "month", apprFlag)); + BigDecimal currentAmount = getAccountSum(a.getId(), "", "month", apprFlag).add(getAccountSumByHead(a.getId(), "", "month", apprFlag)) + .add(getAccountSumByDetail(a.getId(), "", "month", apprFlag)).add(getManyAccountSum(a.getId(), "", "month", apprFlag)).add(a.getInitialAmount()); allMonthAmount = allMonthAmount.add(monthAmount); allCurrentAmount = allCurrentAmount.add(currentAmount); } diff --git a/jshERP-boot/src/main/java/com/jsh/erp/service/depotHead/DepotHeadService.java b/jshERP-boot/src/main/java/com/jsh/erp/service/depotHead/DepotHeadService.java index 3495fd6c..8ae53c15 100644 --- a/jshERP-boot/src/main/java/com/jsh/erp/service/depotHead/DepotHeadService.java +++ b/jshERP-boot/src/main/java/com/jsh/erp/service/depotHead/DepotHeadService.java @@ -18,7 +18,6 @@ import com.jsh.erp.service.depotItem.DepotItemService; import com.jsh.erp.service.log.LogService; import com.jsh.erp.service.orgaUserRel.OrgaUserRelService; import com.jsh.erp.service.person.PersonService; -import com.jsh.erp.service.redis.RedisService; import com.jsh.erp.service.role.RoleService; import com.jsh.erp.service.serialNumber.SerialNumberService; import com.jsh.erp.service.supplier.SupplierService; @@ -38,7 +37,6 @@ import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import java.math.BigDecimal; import java.sql.Timestamp; -import java.text.DecimalFormat; import java.util.*; import static com.jsh.erp.utils.Tools.getCenternTime; @@ -586,11 +584,11 @@ public class DepotHeadService { } public List findInOutDetail(String beginTime, String endTime, String type, String [] creatorArray, - String [] organArray, String materialParam, List depotList, Integer oId, String number, + String [] organArray, Boolean amountApprovalFlag, String materialParam, List depotList, Integer oId, String number, String remark, Integer offset, Integer rows) throws Exception{ List list = null; try{ - list =depotHeadMapperEx.findInOutDetail(beginTime, endTime, type, creatorArray, organArray, materialParam, depotList, oId, number, remark, offset, rows); + list =depotHeadMapperEx.findInOutDetail(beginTime, endTime, type, creatorArray, organArray, amountApprovalFlag, materialParam, depotList, oId, number, remark, offset, rows); }catch(Exception e){ JshException.readFail(logger, e); } @@ -598,25 +596,25 @@ public class DepotHeadService { } public int findInOutDetailCount(String beginTime, String endTime, String type, String [] creatorArray, - String [] organArray, String materialParam, List depotList, Integer oId, String number, + String [] organArray, Boolean amountApprovalFlag, String materialParam, List depotList, Integer oId, String number, String remark) throws Exception{ int result = 0; try{ - result =depotHeadMapperEx.findInOutDetailCount(beginTime, endTime, type, creatorArray, organArray, materialParam, depotList, oId, number, remark); + result =depotHeadMapperEx.findInOutDetailCount(beginTime, endTime, type, creatorArray, organArray, amountApprovalFlag, materialParam, depotList, oId, number, remark); }catch(Exception e){ JshException.readFail(logger, e); } return result; } - public List findInOutMaterialCount(String beginTime, String endTime, String type, String materialParam, + public List findInOutMaterialCount(String beginTime, String endTime, String type, Boolean amountApprovalFlag, String materialParam, List depotList, Integer oId, String roleType, Integer offset, Integer rows)throws Exception { List list = null; try{ String [] creatorArray = getCreatorArray(roleType); String subType = "出库".equals(type)? "销售" : ""; String [] organArray = getOrganArray(subType, ""); - list =depotHeadMapperEx.findInOutMaterialCount(beginTime, endTime, type, materialParam, depotList, oId, + list =depotHeadMapperEx.findInOutMaterialCount(beginTime, endTime, type, amountApprovalFlag, materialParam, depotList, oId, creatorArray, organArray, offset, rows); }catch(Exception e){ JshException.readFail(logger, e); @@ -624,14 +622,14 @@ public class DepotHeadService { return list; } - public int findInOutMaterialCountTotal(String beginTime, String endTime, String type, String materialParam, + public int findInOutMaterialCountTotal(String beginTime, String endTime, String type, Boolean amountApprovalFlag, String materialParam, List depotList, Integer oId, String roleType)throws Exception { int result = 0; try{ String [] creatorArray = getCreatorArray(roleType); String subType = "出库".equals(type)? "销售" : ""; String [] organArray = getOrganArray(subType, ""); - result =depotHeadMapperEx.findInOutMaterialCountTotal(beginTime, endTime, type, materialParam, depotList, oId, + result =depotHeadMapperEx.findInOutMaterialCountTotal(beginTime, endTime, type, amountApprovalFlag, materialParam, depotList, oId, creatorArray, organArray); }catch(Exception e){ JshException.readFail(logger, e); @@ -640,11 +638,11 @@ public class DepotHeadService { } public List findAllocationDetail(String beginTime, String endTime, String subType, String number, - String [] creatorArray, String materialParam, List depotList, List depotFList, + String [] creatorArray, Boolean amountApprovalFlag, String materialParam, List depotList, List depotFList, String remark, Integer offset, Integer rows) throws Exception{ List list = null; try{ - list =depotHeadMapperEx.findAllocationDetail(beginTime, endTime, subType, number, creatorArray, + list =depotHeadMapperEx.findAllocationDetail(beginTime, endTime, subType, number, creatorArray, amountApprovalFlag, materialParam, depotList, depotFList, remark, offset, rows); }catch(Exception e){ JshException.readFail(logger, e); @@ -653,11 +651,11 @@ public class DepotHeadService { } public int findAllocationDetailCount(String beginTime, String endTime, String subType, String number, - String [] creatorArray, String materialParam, List depotList, List depotFList, + String [] creatorArray, Boolean amountApprovalFlag, String materialParam, List depotList, List depotFList, String remark) throws Exception{ int result = 0; try{ - result =depotHeadMapperEx.findAllocationDetailCount(beginTime, endTime, subType, number, creatorArray, + result =depotHeadMapperEx.findAllocationDetailCount(beginTime, endTime, subType, number, creatorArray, amountApprovalFlag, materialParam, depotList, depotFList, remark); }catch(Exception e){ JshException.readFail(logger, e); @@ -1198,13 +1196,15 @@ public class DepotHeadService { } public BigDecimal getBuyAndSaleBasicStatistics(String type, String subType, Integer hasSupplier, - String beginTime, String endTime, String[] creatorArray) { - return depotHeadMapperEx.getBuyAndSaleBasicStatistics(type, subType, hasSupplier, beginTime, endTime, creatorArray); + String beginTime, String endTime, String[] creatorArray) throws Exception { + Boolean amountApprovalFlag = systemConfigService.getAmountApprovalFlag(); + return depotHeadMapperEx.getBuyAndSaleBasicStatistics(type, subType, hasSupplier, beginTime, endTime, creatorArray, amountApprovalFlag); } public BigDecimal getBuyAndSaleRetailStatistics(String type, String subType, - String beginTime, String endTime, String[] creatorArray) { - return depotHeadMapperEx.getBuyAndSaleRetailStatistics(type, subType, beginTime, endTime, creatorArray).abs(); + String beginTime, String endTime, String[] creatorArray) throws Exception { + Boolean amountApprovalFlag = systemConfigService.getAmountApprovalFlag(); + return depotHeadMapperEx.getBuyAndSaleRetailStatistics(type, subType, beginTime, endTime, creatorArray, amountApprovalFlag).abs(); } public DepotHead getDepotHead(String number)throws Exception { diff --git a/jshERP-boot/src/main/java/com/jsh/erp/service/depotItem/DepotItemService.java b/jshERP-boot/src/main/java/com/jsh/erp/service/depotItem/DepotItemService.java index debc062d..65c9e376 100644 --- a/jshERP-boot/src/main/java/com/jsh/erp/service/depotItem/DepotItemService.java +++ b/jshERP-boot/src/main/java/com/jsh/erp/service/depotItem/DepotItemService.java @@ -314,10 +314,10 @@ public class DepotItemService { } public List getListWithBugOrSale(String materialParam, String billType, - String beginTime, String endTime, String[] creatorArray, Integer offset, Integer rows)throws Exception { + String beginTime, String endTime, String[] creatorArray, Boolean amountApprovalFlag, Integer offset, Integer rows)throws Exception { List list =null; try{ - list = depotItemMapperEx.getListWithBugOrSale(materialParam, billType, beginTime, endTime, creatorArray, offset, rows); + list = depotItemMapperEx.getListWithBugOrSale(materialParam, billType, beginTime, endTime, creatorArray, amountApprovalFlag, offset, rows); }catch(Exception e){ JshException.readFail(logger, e); } @@ -325,10 +325,10 @@ public class DepotItemService { } public int getListWithBugOrSaleCount(String materialParam, String billType, - String beginTime, String endTime, String[] creatorArray)throws Exception { + String beginTime, String endTime, String[] creatorArray, Boolean amountApprovalFlag)throws Exception { int result=0; try{ - result = depotItemMapperEx.getListWithBugOrSaleCount(materialParam, billType, beginTime, endTime, creatorArray); + result = depotItemMapperEx.getListWithBugOrSaleCount(materialParam, billType, beginTime, endTime, creatorArray, amountApprovalFlag); }catch(Exception e){ JshException.readFail(logger, e); } @@ -363,9 +363,10 @@ public class DepotItemService { BigDecimal result= BigDecimal.ZERO; try{ String [] creatorArray = depotHeadService.getCreatorArray(roleType); + Boolean amountApprovalFlag = systemConfigService.getAmountApprovalFlag(); String beginTime = Tools.firstDayOfMonth(month) + BusinessConstants.DAY_FIRST_TIME; String endTime = Tools.lastDayOfMonth(month) + BusinessConstants.DAY_LAST_TIME; - result = depotItemMapperEx.inOrOutPrice(type, subType, beginTime, endTime, creatorArray); + result = depotItemMapperEx.inOrOutPrice(type, subType, beginTime, endTime, creatorArray, amountApprovalFlag); }catch(Exception e){ JshException.readFail(logger, e); } @@ -384,9 +385,10 @@ public class DepotItemService { BigDecimal result= BigDecimal.ZERO; try{ String [] creatorArray = depotHeadService.getCreatorArray(roleType); + Boolean amountApprovalFlag = systemConfigService.getAmountApprovalFlag(); String beginTime = Tools.firstDayOfMonth(month) + BusinessConstants.DAY_FIRST_TIME; String endTime = Tools.lastDayOfMonth(month) + BusinessConstants.DAY_LAST_TIME; - result = depotItemMapperEx.inOrOutRetailPrice(type, subType, beginTime, endTime, creatorArray); + result = depotItemMapperEx.inOrOutRetailPrice(type, subType, beginTime, endTime, creatorArray, amountApprovalFlag); result = result.abs(); }catch(Exception e){ JshException.readFail(logger, e); @@ -494,11 +496,11 @@ public class DepotItemService { if (unit.equals(basicUnit)) { //如果等于基本单位 depotItem.setBasicNumber(oNumber); //数量一致 } else if (unit.equals(unitInfo.getOtherUnit())) { //如果等于副单位 - depotItem.setBasicNumber(oNumber.multiply(new BigDecimal(unitInfo.getRatio())) ); //数量乘以比例 + depotItem.setBasicNumber(oNumber.multiply(unitInfo.getRatio())); //数量乘以比例 } else if (unit.equals(unitInfo.getOtherUnitTwo())) { //如果等于副单位2 - depotItem.setBasicNumber(oNumber.multiply(new BigDecimal(unitInfo.getRatioTwo())) ); //数量乘以比例 + depotItem.setBasicNumber(oNumber.multiply(unitInfo.getRatioTwo())); //数量乘以比例 } else if (unit.equals(unitInfo.getOtherUnitThree())) { //如果等于副单位3 - depotItem.setBasicNumber(oNumber.multiply(new BigDecimal(unitInfo.getRatioThree())) ); //数量乘以比例 + depotItem.setBasicNumber(oNumber.multiply(unitInfo.getRatioThree())); //数量乘以比例 } } else { depotItem.setBasicNumber(oNumber); //其他情况 @@ -1034,14 +1036,14 @@ public class DepotItemService { } BigDecimal count = depotItemMapperEx.getFinishNumber(meId, linkId, linkNumber, goToType); //根据多单位情况进行数量的转换 - if(materialUnit.equals(unitInfo.getOtherUnit()) && unitInfo.getRatio() != 0) { - count = count.divide(BigDecimal.valueOf(unitInfo.getRatio()),2,BigDecimal.ROUND_HALF_UP); + if(materialUnit.equals(unitInfo.getOtherUnit()) && unitInfo.getRatio()!=null && unitInfo.getRatio().compareTo(BigDecimal.ZERO)!=0) { + count = count.divide(unitInfo.getRatio(),2,BigDecimal.ROUND_HALF_UP); } - if(materialUnit.equals(unitInfo.getOtherUnitTwo()) && unitInfo.getRatioTwo() != 0) { - count = count.divide(BigDecimal.valueOf(unitInfo.getRatioTwo()),2,BigDecimal.ROUND_HALF_UP); + if(materialUnit.equals(unitInfo.getOtherUnitTwo()) && unitInfo.getRatioTwo()!=null && unitInfo.getRatioTwo().compareTo(BigDecimal.ZERO)!=0) { + count = count.divide(unitInfo.getRatioTwo(),2,BigDecimal.ROUND_HALF_UP); } - if(materialUnit.equals(unitInfo.getOtherUnitThree()) && unitInfo.getRatioThree() != 0) { - count = count.divide(BigDecimal.valueOf(unitInfo.getRatioThree()),2,BigDecimal.ROUND_HALF_UP); + if(materialUnit.equals(unitInfo.getOtherUnitThree()) && unitInfo.getRatioThree()!=null && unitInfo.getRatioThree().compareTo(BigDecimal.ZERO)!=0) { + count = count.divide(unitInfo.getRatioThree(),2,BigDecimal.ROUND_HALF_UP); } return count; } @@ -1064,14 +1066,14 @@ public class DepotItemService { String linkNumber = depotHead.getNumber(); //订单号 BigDecimal count = depotItemMapperEx.getRealFinishNumber(meId, linkId, linkNumber, currentHeaderId, goToType); //根据多单位情况进行数量的转换 - if(materialUnit.equals(unitInfo.getOtherUnit()) && unitInfo.getRatio() != 0) { - count = count.divide(BigDecimal.valueOf(unitInfo.getRatio()),2,BigDecimal.ROUND_HALF_UP); + if(materialUnit.equals(unitInfo.getOtherUnit()) && unitInfo.getRatio()!=null && unitInfo.getRatio().compareTo(BigDecimal.ZERO)!=0) { + count = count.divide(unitInfo.getRatio(),2,BigDecimal.ROUND_HALF_UP); } - if(materialUnit.equals(unitInfo.getOtherUnitTwo()) && unitInfo.getRatioTwo() != 0) { - count = count.divide(BigDecimal.valueOf(unitInfo.getRatioTwo()),2,BigDecimal.ROUND_HALF_UP); + if(materialUnit.equals(unitInfo.getOtherUnitTwo()) && unitInfo.getRatioTwo()!=null && unitInfo.getRatioTwo().compareTo(BigDecimal.ZERO)!=0) { + count = count.divide(unitInfo.getRatioTwo(),2,BigDecimal.ROUND_HALF_UP); } - if(materialUnit.equals(unitInfo.getOtherUnitThree()) && unitInfo.getRatioThree() != 0) { - count = count.divide(BigDecimal.valueOf(unitInfo.getRatioThree()),2,BigDecimal.ROUND_HALF_UP); + if(materialUnit.equals(unitInfo.getOtherUnitThree()) && unitInfo.getRatioThree()!=null && unitInfo.getRatioThree().compareTo(BigDecimal.ZERO)!=0) { + count = count.divide(unitInfo.getRatioThree(),2,BigDecimal.ROUND_HALF_UP); } return count; } diff --git a/jshERP-boot/src/main/java/com/jsh/erp/service/material/MaterialService.java b/jshERP-boot/src/main/java/com/jsh/erp/service/material/MaterialService.java index 9e0ceb71..b5291582 100644 --- a/jshERP-boot/src/main/java/com/jsh/erp/service/material/MaterialService.java +++ b/jshERP-boot/src/main/java/com/jsh/erp/service/material/MaterialService.java @@ -567,12 +567,12 @@ public class MaterialService { basicObj.put("lowDecimal", lowDecimal); materialExObj.put("basic", basicObj); if(StringUtil.isNotEmpty(manyUnit) && StringUtil.isNotEmpty(ratio)){ //多单位 - //校验比例是否是正整数 - if(!StringUtil.isPositiveLong(ratio.trim())) { + //校验比例是否是数字(含小数) + if(!StringUtil.isPositiveBigDecimal(ratio.trim())) { throw new BusinessRunTimeException(ExceptionConstants.MATERIAL_RATIO_NOT_INTEGER_CODE, String.format(ExceptionConstants.MATERIAL_RATIO_NOT_INTEGER_MSG, i+1)); } - Long unitId = unitService.getUnitIdByParam(unit, manyUnit, Integer.parseInt(ratio.trim())); + Long unitId = unitService.getUnitIdByParam(unit, manyUnit, new BigDecimal(ratio.trim())); if(unitId != null) { m.setUnitId(unitId); } else { @@ -1140,8 +1140,8 @@ public class MaterialService { String bigUnitStock = ""; if(null!= unitId) { Unit unit = unitService.getUnit(unitId); - if(unit.getRatio()!=0 && stock!=null) { - bigUnitStock = stock.divide(BigDecimal.valueOf(unit.getRatio()),2,BigDecimal.ROUND_HALF_UP) + unit.getOtherUnit(); + if(unit.getRatio()!=null && unit.getRatio().compareTo(BigDecimal.ZERO)!=0 && stock!=null) { + bigUnitStock = stock.divide(unit.getRatio(),2,BigDecimal.ROUND_HALF_UP) + unit.getOtherUnit(); } } return bigUnitStock; diff --git a/jshERP-boot/src/main/java/com/jsh/erp/service/systemConfig/SystemConfigService.java b/jshERP-boot/src/main/java/com/jsh/erp/service/systemConfig/SystemConfigService.java index 4fb61d1e..baa2f3ef 100644 --- a/jshERP-boot/src/main/java/com/jsh/erp/service/systemConfig/SystemConfigService.java +++ b/jshERP-boot/src/main/java/com/jsh/erp/service/systemConfig/SystemConfigService.java @@ -199,4 +199,21 @@ public class SystemConfigService { } return minusStockFlag; } + + /** + * 获取金额审核开关 + * @return + * @throws Exception + */ + public boolean getAmountApprovalFlag() throws Exception { + boolean amountApprovalFlag = false; + List list = getSystemConfig(); + if(list.size()>0) { + String flag = list.get(0).getAmountApprovalFlag(); + if(("1").equals(flag)) { + amountApprovalFlag = true; + } + } + return amountApprovalFlag; + } } diff --git a/jshERP-boot/src/main/java/com/jsh/erp/service/unit/UnitService.java b/jshERP-boot/src/main/java/com/jsh/erp/service/unit/UnitService.java index 3e1b5011..b00c3f62 100644 --- a/jshERP-boot/src/main/java/com/jsh/erp/service/unit/UnitService.java +++ b/jshERP-boot/src/main/java/com/jsh/erp/service/unit/UnitService.java @@ -217,7 +217,7 @@ public class UnitService { * @param ratio * @return */ - public Long getUnitIdByParam(String basicUnit, String otherUnit, Integer ratio){ + public Long getUnitIdByParam(String basicUnit, String otherUnit, BigDecimal ratio){ Long unitId = null; UnitExample example = new UnitExample(); example.createCriteria().andBasicUnitEqualTo(basicUnit).andOtherUnitEqualTo(otherUnit).andRatioEqualTo(ratio) @@ -237,14 +237,14 @@ public class UnitService { * @return */ public BigDecimal parseStockByUnit(BigDecimal stock, Unit unitInfo, String materialUnit) { - if(materialUnit.equals(unitInfo.getOtherUnit()) && unitInfo.getRatio() != 0) { - stock = stock.divide(BigDecimal.valueOf(unitInfo.getRatio()),2,BigDecimal.ROUND_HALF_UP); + if(materialUnit.equals(unitInfo.getOtherUnit()) && unitInfo.getRatio()!=null && unitInfo.getRatio().compareTo(BigDecimal.ZERO)!=0) { + stock = stock.divide(unitInfo.getRatio(),2,BigDecimal.ROUND_HALF_UP); } - if(materialUnit.equals(unitInfo.getOtherUnitTwo()) && unitInfo.getRatioTwo() != 0) { - stock = stock.divide(BigDecimal.valueOf(unitInfo.getRatioTwo()),2,BigDecimal.ROUND_HALF_UP); + if(materialUnit.equals(unitInfo.getOtherUnitTwo()) && unitInfo.getRatioTwo()!=null && unitInfo.getRatioTwo().compareTo(BigDecimal.ZERO)!=0) { + stock = stock.divide(unitInfo.getRatioTwo(),2,BigDecimal.ROUND_HALF_UP); } - if(materialUnit.equals(unitInfo.getOtherUnitThree()) && unitInfo.getRatioThree() != 0) { - stock = stock.divide(BigDecimal.valueOf(unitInfo.getRatioThree()),2,BigDecimal.ROUND_HALF_UP); + if(materialUnit.equals(unitInfo.getOtherUnitThree()) && unitInfo.getRatioThree()!=null && unitInfo.getRatioThree().compareTo(BigDecimal.ZERO)!=0) { + stock = stock.divide(unitInfo.getRatioThree(),2,BigDecimal.ROUND_HALF_UP); } return stock; } diff --git a/jshERP-boot/src/main/resources/mapper_xml/AccountHeadMapper.xml b/jshERP-boot/src/main/resources/mapper_xml/AccountHeadMapper.xml index 6b669c25..3c03c2f6 100644 --- a/jshERP-boot/src/main/resources/mapper_xml/AccountHeadMapper.xml +++ b/jshERP-boot/src/main/resources/mapper_xml/AccountHeadMapper.xml @@ -16,6 +16,7 @@ + @@ -79,7 +80,7 @@ id, type, organ_id, hands_person_id, creator, change_amount, discount_money, total_price, - account_id, bill_no, bill_time, remark, file_name, status, tenant_id, delete_flag + account_id, bill_no, bill_time, remark, file_name, status, source, tenant_id, delete_flag @@ -138,8 +139,8 @@ account_id_list, account_money_list, discount, discount_money, discount_last_money, other_money, deposit, status, purchase_status, - link_number, tenant_id, delete_flag - ) + source, link_number, tenant_id, + delete_flag) values (#{id,jdbcType=BIGINT}, #{type,jdbcType=VARCHAR}, #{subType,jdbcType=VARCHAR}, #{defaultNumber,jdbcType=VARCHAR}, #{number,jdbcType=VARCHAR}, #{createTime,jdbcType=TIMESTAMP}, #{operTime,jdbcType=TIMESTAMP}, #{organId,jdbcType=BIGINT}, #{creator,jdbcType=BIGINT}, @@ -149,8 +150,8 @@ #{accountIdList,jdbcType=VARCHAR}, #{accountMoneyList,jdbcType=VARCHAR}, #{discount,jdbcType=DECIMAL}, #{discountMoney,jdbcType=DECIMAL}, #{discountLastMoney,jdbcType=DECIMAL}, #{otherMoney,jdbcType=DECIMAL}, #{deposit,jdbcType=DECIMAL}, #{status,jdbcType=VARCHAR}, #{purchaseStatus,jdbcType=VARCHAR}, - #{linkNumber,jdbcType=VARCHAR}, #{tenantId,jdbcType=BIGINT}, #{deleteFlag,jdbcType=VARCHAR} - ) + #{source,jdbcType=VARCHAR}, #{linkNumber,jdbcType=VARCHAR}, #{tenantId,jdbcType=BIGINT}, + #{deleteFlag,jdbcType=VARCHAR}) insert into jsh_depot_head @@ -236,6 +237,9 @@ purchase_status, + + source, + link_number, @@ -328,6 +332,9 @@ #{purchaseStatus,jdbcType=VARCHAR}, + + #{source,jdbcType=VARCHAR}, + #{linkNumber,jdbcType=VARCHAR}, @@ -429,6 +436,9 @@ purchase_status = #{record.purchaseStatus,jdbcType=VARCHAR}, + + source = #{record.source,jdbcType=VARCHAR}, + link_number = #{record.linkNumber,jdbcType=VARCHAR}, @@ -472,6 +482,7 @@ deposit = #{record.deposit,jdbcType=DECIMAL}, status = #{record.status,jdbcType=VARCHAR}, purchase_status = #{record.purchaseStatus,jdbcType=VARCHAR}, + source = #{record.source,jdbcType=VARCHAR}, link_number = #{record.linkNumber,jdbcType=VARCHAR}, tenant_id = #{record.tenantId,jdbcType=BIGINT}, delete_flag = #{record.deleteFlag,jdbcType=VARCHAR} @@ -560,6 +571,9 @@ purchase_status = #{purchaseStatus,jdbcType=VARCHAR}, + + source = #{source,jdbcType=VARCHAR}, + link_number = #{linkNumber,jdbcType=VARCHAR}, @@ -600,6 +614,7 @@ deposit = #{deposit,jdbcType=DECIMAL}, status = #{status,jdbcType=VARCHAR}, purchase_status = #{purchaseStatus,jdbcType=VARCHAR}, + source = #{source,jdbcType=VARCHAR}, link_number = #{linkNumber,jdbcType=VARCHAR}, tenant_id = #{tenantId,jdbcType=BIGINT}, delete_flag = #{deleteFlag,jdbcType=VARCHAR} diff --git a/jshERP-boot/src/main/resources/mapper_xml/DepotHeadMapperEx.xml b/jshERP-boot/src/main/resources/mapper_xml/DepotHeadMapperEx.xml index 6f2029a7..d268086b 100644 --- a/jshERP-boot/src/main/resources/mapper_xml/DepotHeadMapperEx.xml +++ b/jshERP-boot/src/main/resources/mapper_xml/DepotHeadMapperEx.xml @@ -313,6 +313,9 @@ ) or dh.sub_type='采购退货' or dh.sub_type='零售' or dh.sub_type='其它') + + and dh.status = '1' + and dh.number like #{bindNumber} @@ -368,6 +371,9 @@ ) or dh.sub_type='采购退货' or dh.sub_type='零售' or dh.sub_type='其它') + + and dh.status = '1' + and dh.number like #{bindNumber} @@ -439,6 +445,9 @@ and (me.bar_code like #{bindKey} or m.name like #{bindKey} or m.standard like #{bindKey} or m.model like #{bindKey}) + + and dh.status = '1' + and ifnull(dh.delete_flag,'0') !='1' group by di.material_id @@ -496,6 +505,9 @@ and (me.bar_code like #{bindKey} or m.name like #{bindKey} or m.standard like #{bindKey} or m.model like #{bindKey}) + + and dh.status = '1' + and ifnull(dh.delete_flag,'0') !='1' group by di.material_id) a @@ -537,6 +549,9 @@ ) + + and dh.status = '1' + and (me.bar_code like #{bindKey} or m.name like #{bindKey} or m.standard like #{bindKey} or m.model like #{bindKey} or dh.remark like #{bindKey}) @@ -586,6 +601,9 @@ ) + + and dh.status = '1' + and (me.bar_code like #{bindKey} or m.name like #{bindKey} or m.standard like #{bindKey} or m.model like #{bindKey} or dh.remark like #{bindKey}) @@ -884,6 +902,9 @@ and dh.oper_time <= #{endTime} + + and dh.status = '1' + and dh.creator in ( @@ -915,6 +936,9 @@ and dh.oper_time <= #{endTime} + + and dh.status = '1' + and dh.creator in ( diff --git a/jshERP-boot/src/main/resources/mapper_xml/DepotItemMapperEx.xml b/jshERP-boot/src/main/resources/mapper_xml/DepotItemMapperEx.xml index 844532d3..f028d170 100644 --- a/jshERP-boot/src/main/resources/mapper_xml/DepotItemMapperEx.xml +++ b/jshERP-boot/src/main/resources/mapper_xml/DepotItemMapperEx.xml @@ -376,6 +376,9 @@ ) + + and dh.status = '1' + and ifnull(m.delete_flag,'0') !='1' group by m.id order by m.id desc @@ -414,6 +417,9 @@ ) + + and dh.status = '1' + and ifnull(di.delete_flag,'0') !='1' group by m.id) cc @@ -464,6 +470,9 @@ and dh.type=#{type} and dh.sub_type=#{subType} and dh.oper_time >= #{beginTime} and dh.oper_time <= #{endTime} + + and dh.status = '1' + and dh.creator in ( @@ -485,6 +494,9 @@ and dh.type=#{type} and dh.sub_type=#{subType} and dh.oper_time >= #{beginTime} and dh.oper_time <= #{endTime} + + and dh.status = '1' + and dh.creator in ( diff --git a/jshERP-boot/src/main/resources/mapper_xml/SystemConfigMapper.xml b/jshERP-boot/src/main/resources/mapper_xml/SystemConfigMapper.xml index 68983e98..5042fd73 100644 --- a/jshERP-boot/src/main/resources/mapper_xml/SystemConfigMapper.xml +++ b/jshERP-boot/src/main/resources/mapper_xml/SystemConfigMapper.xml @@ -16,6 +16,7 @@ + @@ -80,7 +81,7 @@ id, company_name, company_contacts, company_address, company_tel, company_fax, company_post_code, sale_agreement, depot_flag, customer_flag, minus_stock_flag, purchase_by_sale_flag, - multi_level_approval_flag, multi_bill_type, tenant_id, delete_flag + multi_level_approval_flag, multi_bill_type, amount_approval_flag, tenant_id, delete_flag