diff --git a/sql/table.sql b/sql/table.sql
index 152ee38..825e6e4 100644
--- a/sql/table.sql
+++ b/sql/table.sql
@@ -22,6 +22,7 @@ CREATE TABLE `order_base_info` (
           `outbound_type` varchar(32) DEFAULT NULL COMMENT '出库类型',
           `packet_type` varchar(64) DEFAULT NULL COMMENT '包装类型',
           `order_status`    INT          NOT NULL COMMENT '订单状态',
+          `business_person` varchar(64)  DEFAULT NULL COMMENT '业务员',
           `enable_flag`    INT          NOT NULL COMMENT '是否可用 10-可用 20-删除',
           `create_time`    DATETIME     NOT NULL COMMENT '创建时间',
           `create_by`      varchar(64)  NOT NULL COMMENT '创建人',
@@ -65,8 +66,11 @@ CREATE TABLE `order_completion_report` (
           `id` bigint NOT NULL AUTO_INCREMENT,
           `order_id` bigint NOT NULL COMMENT '订单id',
           `idea_source`    varchar(64)  DEFAULT NULL COMMENT '想法来源',
-          `manual_preform` varchar(64)  DEFAULT NULL COMMENT '手工初型',
-          `idea_manual_rate` DOUBLE DEFAULT 0 COMMENT '想法和手工比例分配',
+          `idea_source_rate` DOUBLE DEFAULT 0 COMMENT '想法来源占比',
+          `manual_preform1` varchar(64)  DEFAULT NULL COMMENT '手工初型1',
+          `manual_preform1_rate` DOUBLE DEFAULT 0 COMMENT '手工初型1占比',
+          `manual_preform2` varchar(64)  DEFAULT NULL COMMENT '手工初型2',
+          `manual_preform2_rate` DOUBLE DEFAULT 0 COMMENT '手工初型2占比',
           `order_status`    INT          NOT NULL COMMENT '订单状态',
           `enable_flag`    INT          NOT NULL COMMENT '是否可用 10-可用 20-删除',
           `create_time`    DATETIME     NOT NULL COMMENT '创建时间',
@@ -200,4 +204,23 @@ CREATE TABLE `order_audit_log` (
           `modify_by`      varchar(64)  DEFAULT NULL COMMENT '修改人',
           `version`        INT          DEFAULT NULL COMMENT '版本号--乐观锁预留字段',
           PRIMARY KEY (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户订单审批日志表';
\ No newline at end of file
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户订单审批日志表';
+
+DROP TABLE IF EXISTS `system_setting`;
+CREATE TABLE `system_setting` (
+          `id` bigint NOT NULL AUTO_INCREMENT,
+          `setting_code` varchar(64)  NOT NULL COMMENT '配置code',
+          `setting_name` varchar(64) not null COMMENT '名称',
+          `setting_value` varchar(64) not null COMMENT '值',
+          `setting_type` INT  NOT NULL COMMENT '配置类型,0 单个配置项,1:多个配置项',
+          `relation_code` varchar(64)  NOT NULL COMMENT '关联code',
+          `relation_name` varchar(64) not null COMMENT '名称',
+          `relation_value` varchar(64) not null COMMENT '值',
+          `enable_flag`    INT          NOT NULL COMMENT '是否可用 10-可用 20-删除',
+          `create_time`    DATETIME     NOT NULL COMMENT '创建时间',
+          `create_by`      varchar(64)  NOT NULL COMMENT '创建人',
+          `modify_time`    DATETIME     DEFAULT NULL COMMENT '修改时间',
+          `modify_by`      varchar(64)  DEFAULT NULL COMMENT '修改人',
+          `version`        INT          DEFAULT NULL COMMENT '版本号--乐观锁预留字段',
+          PRIMARY KEY (`id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='系统配置';
\ No newline at end of file
diff --git a/src/main/java/com/order/erp/common/utils/OrderFieldUtils.java b/src/main/java/com/order/erp/common/utils/OrderFieldUtils.java
index bf43db5..d0437f7 100644
--- a/src/main/java/com/order/erp/common/utils/OrderFieldUtils.java
+++ b/src/main/java/com/order/erp/common/utils/OrderFieldUtils.java
@@ -67,9 +67,12 @@ public class OrderFieldUtils {
     public static OrderCompletionReportFieldVO initReportField(OrderLockFieldEnum lockFieldEnum) {
         String locked = lockFieldEnum.getStatus();
         return OrderCompletionReportFieldVO.builder()
-                .ideaManualRate(locked)
+                .ideaSourceRate(locked)
                 .ideaSource(locked)
-                .manualPreform(locked)
+                .manualPreform1(locked)
+                .manualPreform1Rate(locked)
+                .manualPreform2(locked)
+                .manualPreform2Rate(locked)
                 .orderStatus(locked)
                 .build();
     }
diff --git a/src/main/java/com/order/erp/config/DataScope.java b/src/main/java/com/order/erp/config/DataScope.java
index 903ac5e..8ead808 100644
--- a/src/main/java/com/order/erp/config/DataScope.java
+++ b/src/main/java/com/order/erp/config/DataScope.java
@@ -1,6 +1,7 @@
 package com.order.erp.config;
 
 import com.order.erp.common.utils.SecurityUtils;
+import com.order.erp.domain.RoleEnum;
 import com.order.erp.domain.vo.UserVO;
 import com.order.erp.domain.vo.admin.AdminResultVO;
 import com.order.erp.service.admin.AdminUserService;
@@ -35,6 +36,14 @@ public class DataScope {
     }
 
     /**
+     *
+     * @return
+     */
+    public RoleEnum getRole() {
+        return userService.getRoleBy(SecurityUtils.getUsername()).getData();
+    }
+
+    /**
      * @return
      */
     public String getLoginUserName() {
diff --git a/src/main/java/com/order/erp/controller/SystemSettingController.java b/src/main/java/com/order/erp/controller/SystemSettingController.java
new file mode 100644
index 0000000..085699d
--- /dev/null
+++ b/src/main/java/com/order/erp/controller/SystemSettingController.java
@@ -0,0 +1,98 @@
+package com.order.erp.controller;
+
+import com.order.erp.common.constant.ServerResult;
+import com.order.erp.common.jsr303.OperateGroup;
+import com.order.erp.domain.vo.SystemSettingQueryVO;
+import com.order.erp.domain.vo.SystemSettingVO;
+import com.order.erp.service.SystemSettingService;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.annotation.Resource;
+
+/**
+ * 系统配置(SystemSetting)表控制层
+ *
+ * @author makejava
+ * @since 2023-12-05 13:44:02
+ */
+@RestController
+@RequestMapping("/order/erp/system_setting")
+public class SystemSettingController {
+    /**
+     * 服务对象
+     */
+    @Resource
+    private SystemSettingService systemSettingService;
+
+    /**
+     * 分页查询
+     *
+     * @param systemSettingQueryVO 查询条件
+     * @return 查询结果
+     */
+    @PostMapping("/query_list")
+    public ServerResult queryList(@RequestBody @Validated({OperateGroup.List.class}) SystemSettingQueryVO systemSettingQueryVO) {
+        return systemSettingService.list(systemSettingQueryVO);
+    }
+
+    /**
+     * 分页查询
+     *
+     * @param systemSettingQueryVO 查询条件
+     * @return 查询结果
+     */
+    @PostMapping("/list_by_page")
+    public ServerResult listByPage(@RequestBody @Validated({OperateGroup.List.class}) SystemSettingQueryVO systemSettingQueryVO) {
+        return systemSettingService.listByPage(systemSettingQueryVO);
+    }
+
+    /**
+     * 通过主键查询单条数据
+     *
+     * @param systemSettingQueryVO 查询条件
+     * @return 单条数据
+     */
+    @PostMapping("/query_by_id")
+    public ServerResult queryById(@RequestBody SystemSettingQueryVO systemSettingQueryVO) {
+        return systemSettingService.queryById(systemSettingQueryVO);
+    }
+
+    /**
+     * 新增数据
+     *
+     * @param systemSettingVO 数据VO
+     * @return 新增结果
+     */
+    @PostMapping("/add")
+    public ServerResult add(@RequestBody SystemSettingVO systemSettingVO) {
+        return systemSettingService.add(systemSettingVO);
+    }
+
+    /**
+     * 编辑数据
+     *
+     * @param systemSettingVO 数据VO
+     * @return 编辑结果
+     */
+    @PostMapping("/edit")
+    public ServerResult edit(@RequestBody SystemSettingVO systemSettingVO) {
+        return systemSettingService.edit(systemSettingVO);
+    }
+
+    /**
+     * 删除数据
+     *
+     * @param systemSettingQueryVO 查询条件
+     * @return 删除是否成功
+     */
+    @PostMapping("/delete_by_id")
+    public ServerResult deleteById(@RequestBody SystemSettingQueryVO systemSettingQueryVO) {
+        return systemSettingService.deleteById(systemSettingQueryVO);
+    }
+
+}
+
diff --git a/src/main/java/com/order/erp/domain/dto/SystemSettingDO.java b/src/main/java/com/order/erp/domain/dto/SystemSettingDO.java
new file mode 100644
index 0000000..8bac17d
--- /dev/null
+++ b/src/main/java/com/order/erp/domain/dto/SystemSettingDO.java
@@ -0,0 +1,54 @@
+package com.order.erp.domain.dto;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.*;
+import lombok.experimental.SuperBuilder;
+
+import java.io.Serializable;
+
+/**
+ * 系统配置(SystemSetting)实体类
+ *
+ * @author makejava
+ * @since 2023-12-05 13:43:58
+ */
+@TableName("system_setting")
+@Data
+@AllArgsConstructor
+@ToString
+@NoArgsConstructor
+@EqualsAndHashCode(callSuper = false)
+@SuperBuilder
+public class SystemSettingDO extends BaseDO implements Serializable {
+
+    private Long id;
+    /**
+     * 配置code
+     */
+    private String settingCode;
+    /**
+     * 名称
+     */
+    private String settingName;
+    /**
+     * 值
+     */
+    private String settingValue;
+    /**
+     * 配置类型,0 单个配置项,1:多个配置项
+     */
+    private Integer settingType;
+    /**
+     * 关联code
+     */
+    private String relationCode;
+    /**
+     * 名称
+     */
+    private String relationName;
+    /**
+     * 值
+     */
+    private String relationValue;
+
+}
diff --git a/src/main/java/com/order/erp/domain/dto/order/OrderBaseInfoDO.java b/src/main/java/com/order/erp/domain/dto/order/OrderBaseInfoDO.java
index 1a66e51..3f34e1e 100644
--- a/src/main/java/com/order/erp/domain/dto/order/OrderBaseInfoDO.java
+++ b/src/main/java/com/order/erp/domain/dto/order/OrderBaseInfoDO.java
@@ -100,6 +100,7 @@ public class OrderBaseInfoDO extends BaseDO implements Serializable {
      * 出库类型
      */
     private String outboundType;
+
     /**
      * 包装类型
      */
@@ -110,4 +111,8 @@ public class OrderBaseInfoDO extends BaseDO implements Serializable {
      */
     private Integer orderStatus;
 
+    /**
+     * 业务员
+     */
+    private String businessPerson;
 }
diff --git a/src/main/java/com/order/erp/domain/dto/order/OrderCompletionReportDO.java b/src/main/java/com/order/erp/domain/dto/order/OrderCompletionReportDO.java
index e7a48c7..9b34a06 100644
--- a/src/main/java/com/order/erp/domain/dto/order/OrderCompletionReportDO.java
+++ b/src/main/java/com/order/erp/domain/dto/order/OrderCompletionReportDO.java
@@ -32,14 +32,31 @@ public class OrderCompletionReportDO extends BaseDO implements Serializable {
      * 想法来源
      */
     private String ideaSource;
+
+    /**
+     * 想法来源占比
+     */
+    private Double ideaSourceRate;
+
     /**
-     * 手工初型
+     * 手工初型1
      */
-    private String manualPreform;
+    private String manualPreform1;
+
+    /**
+     * 手工初型1占比
+     */
+    private Double manualPreform1Rate;
+
+    /**
+     * 手工初型2
+     */
+    private String manualPreform2;
+
     /**
-     * 想法和手工比例分配
+     * 手工初型2占比
      */
-    private Double ideaManualRate;
+    private Double manualPreform2Rate;
 
     /**
      * 订单状态:枚举类 OrderStatusEnum
diff --git a/src/main/java/com/order/erp/domain/vo/SystemSettingQueryVO.java b/src/main/java/com/order/erp/domain/vo/SystemSettingQueryVO.java
new file mode 100644
index 0000000..ac2e36b
--- /dev/null
+++ b/src/main/java/com/order/erp/domain/vo/SystemSettingQueryVO.java
@@ -0,0 +1,58 @@
+package com.order.erp.domain.vo;
+
+import lombok.*;
+import lombok.experimental.SuperBuilder;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * 系统配置(SystemSetting)实体类
+ *
+ * @author makejava
+ * @since 2023-12-05 13:44:02
+ */
+@Data
+@AllArgsConstructor
+@ToString
+@NoArgsConstructor
+@EqualsAndHashCode(callSuper = false)
+@SuperBuilder
+public class SystemSettingQueryVO extends BasePageVO implements Serializable {
+
+    private List<Long> ids;
+
+
+    private Long id;
+    /**
+     * 配置code
+     */
+    private String settingCode;
+    /**
+     * 名称
+     */
+    private String settingName;
+    /**
+     * 值
+     */
+    private String settingValue;
+    /**
+     * 配置类型,0 单个配置项,1:多个配置项
+     */
+    private Integer settingType;
+    /**
+     * 关联code
+     */
+    private String relationCode;
+    /**
+     * 名称
+     */
+    private String relationName;
+    /**
+     * 值
+     */
+    private String relationValue;
+
+
+}
+
diff --git a/src/main/java/com/order/erp/domain/vo/SystemSettingResultVO.java b/src/main/java/com/order/erp/domain/vo/SystemSettingResultVO.java
new file mode 100644
index 0000000..c0dae2d
--- /dev/null
+++ b/src/main/java/com/order/erp/domain/vo/SystemSettingResultVO.java
@@ -0,0 +1,51 @@
+package com.order.erp.domain.vo;
+
+import lombok.*;
+import lombok.experimental.SuperBuilder;
+
+import java.io.Serializable;
+
+/**
+ * @author makejava
+ * @since 2023-08-30 17:51:48
+ */
+@Data
+@AllArgsConstructor
+@ToString
+@NoArgsConstructor
+@EqualsAndHashCode(callSuper = false)
+@SuperBuilder
+public class SystemSettingResultVO implements Serializable {
+
+    private Long id;
+    /**
+     * 配置code
+     */
+    private String settingCode;
+    /**
+     * 名称
+     */
+    private String settingName;
+    /**
+     * 值
+     */
+    private String settingValue;
+    /**
+     * 配置类型,0 单个配置项,1:多个配置项
+     */
+    private Integer settingType;
+    /**
+     * 关联code
+     */
+    private String relationCode;
+    /**
+     * 名称
+     */
+    private String relationName;
+    /**
+     * 值
+     */
+    private String relationValue;
+
+
+}
diff --git a/src/main/java/com/order/erp/domain/vo/SystemSettingVO.java b/src/main/java/com/order/erp/domain/vo/SystemSettingVO.java
new file mode 100644
index 0000000..fbbc667
--- /dev/null
+++ b/src/main/java/com/order/erp/domain/vo/SystemSettingVO.java
@@ -0,0 +1,53 @@
+package com.order.erp.domain.vo;
+
+import lombok.*;
+import lombok.experimental.SuperBuilder;
+
+import java.io.Serializable;
+
+/**
+ * 系统配置(SystemSetting)实体类
+ *
+ * @author makejava
+ * @since 2023-12-05 13:44:01
+ */
+@Data
+@AllArgsConstructor
+@ToString
+@NoArgsConstructor
+@EqualsAndHashCode(callSuper = false)
+@SuperBuilder
+public class SystemSettingVO implements Serializable {
+
+    private Long id;
+    /**
+     * 配置code
+     */
+    private String settingCode;
+    /**
+     * 名称
+     */
+    private String settingName;
+    /**
+     * 值
+     */
+    private String settingValue;
+    /**
+     * 配置类型,0 单个配置项,1:多个配置项
+     */
+    private Integer settingType;
+    /**
+     * 关联code
+     */
+    private String relationCode;
+    /**
+     * 名称
+     */
+    private String relationName;
+    /**
+     * 值
+     */
+    private String relationValue;
+
+
+}
diff --git a/src/main/java/com/order/erp/domain/vo/order/OrderBaseInfoQueryVO.java b/src/main/java/com/order/erp/domain/vo/order/OrderBaseInfoQueryVO.java
index 9218183..84ce7fc 100644
--- a/src/main/java/com/order/erp/domain/vo/order/OrderBaseInfoQueryVO.java
+++ b/src/main/java/com/order/erp/domain/vo/order/OrderBaseInfoQueryVO.java
@@ -140,5 +140,15 @@ public class OrderBaseInfoQueryVO extends BasePageVO implements Serializable {
      */
     private OrderLockFieldVO fieldVO;
 
+    /**
+     * 创建人
+     */
+    private String createBy;
+
+    /**
+     * 业务员
+     */
+    private String businessPerson;
+
 }
 
diff --git a/src/main/java/com/order/erp/domain/vo/order/OrderBaseInfoVO.java b/src/main/java/com/order/erp/domain/vo/order/OrderBaseInfoVO.java
index 5961df5..a83396f 100644
--- a/src/main/java/com/order/erp/domain/vo/order/OrderBaseInfoVO.java
+++ b/src/main/java/com/order/erp/domain/vo/order/OrderBaseInfoVO.java
@@ -108,4 +108,9 @@ public class OrderBaseInfoVO implements Serializable {
      */
     private Integer orderStatus;
 
+    /**
+     * 业务员
+     */
+    private String businessPerson;
+
 }
diff --git a/src/main/java/com/order/erp/domain/vo/order/OrderCompletionReportFieldVO.java b/src/main/java/com/order/erp/domain/vo/order/OrderCompletionReportFieldVO.java
index dd59ce7..cb2fae6 100644
--- a/src/main/java/com/order/erp/domain/vo/order/OrderCompletionReportFieldVO.java
+++ b/src/main/java/com/order/erp/domain/vo/order/OrderCompletionReportFieldVO.java
@@ -27,14 +27,31 @@ public class OrderCompletionReportFieldVO implements Serializable {
      * 想法来源
      */
     private String ideaSource;
+
+    /**
+     * 想法来源占比
+     */
+    private String ideaSourceRate;
+
     /**
-     * 手工初型
+     * 手工初型1
      */
-    private String manualPreform;
+    private String manualPreform1;
+
+    /**
+     * 手工初型1占比
+     */
+    private String manualPreform1Rate;
+
+    /**
+     * 手工初型2
+     */
+    private String manualPreform2;
+
     /**
-     * 想法和手工比例分配
+     * 手工初型2占比
      */
-    private String ideaManualRate;
+    private String manualPreform2Rate;
 
     /**
      * 订单状态
diff --git a/src/main/java/com/order/erp/domain/vo/order/OrderCompletionReportVO.java b/src/main/java/com/order/erp/domain/vo/order/OrderCompletionReportVO.java
index 212cc57..f3cfbdf 100644
--- a/src/main/java/com/order/erp/domain/vo/order/OrderCompletionReportVO.java
+++ b/src/main/java/com/order/erp/domain/vo/order/OrderCompletionReportVO.java
@@ -29,14 +29,32 @@ public class OrderCompletionReportVO implements Serializable {
      * 想法来源
      */
     private String ideaSource;
+
+    /**
+     * 想法来源占比
+     */
+    private Double ideaSourceRate;
+
+    /**
+     * 手工初型1
+     */
+    private String manualPreform1;
+
+    /**
+     * 手工初型1占比
+     */
+    private Double manualPreform1Rate;
+
     /**
-     * 手工初型
+     * 手工初型2
      */
-    private String manualPreform;
+    private String manualPreform2;
+
     /**
-     * 想法和手工比例分配
+     * 手工初型2占比
      */
-    private Double ideaManualRate;
+    private Double manualPreform2Rate;
+
 
     /**
      * 订单状态:枚举类 OrderStatusEnum
diff --git a/src/main/java/com/order/erp/mapper/SystemSettingMapper.java b/src/main/java/com/order/erp/mapper/SystemSettingMapper.java
new file mode 100644
index 0000000..16ee67c
--- /dev/null
+++ b/src/main/java/com/order/erp/mapper/SystemSettingMapper.java
@@ -0,0 +1,16 @@
+package com.order.erp.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.order.erp.domain.dto.SystemSettingDO;
+
+/**
+ * 系统配置(SystemSetting)表数据库访问层
+ *
+ * @author makejava
+ * @since 2023-12-05 13:44:03
+ */
+public interface SystemSettingMapper extends BaseMapper<SystemSettingDO> {
+
+
+}
+
diff --git a/src/main/java/com/order/erp/service/SystemSettingService.java b/src/main/java/com/order/erp/service/SystemSettingService.java
new file mode 100644
index 0000000..0e02a13
--- /dev/null
+++ b/src/main/java/com/order/erp/service/SystemSettingService.java
@@ -0,0 +1,64 @@
+package com.order.erp.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.order.erp.common.constant.ServerResult;
+import com.order.erp.domain.dto.SystemSettingDO;
+import com.order.erp.domain.vo.SystemSettingQueryVO;
+import com.order.erp.domain.vo.SystemSettingVO;
+
+/**
+ * 系统配置(SystemSetting)表服务接口
+ *
+ * @author makejava
+ * @since 2023-12-05 13:44:03
+ */
+public interface SystemSettingService extends IService<SystemSettingDO> {
+
+    /**
+     * 通过ID查询单条数据
+     *
+     * @param systemSettingQueryVO 主键
+     * @return 实例对象
+     */
+    ServerResult queryById(SystemSettingQueryVO systemSettingQueryVO);
+
+    /**
+     * 分页查询
+     *
+     * @param systemSettingQueryVO 筛选条件
+     * @return 查询结果
+     */
+    ServerResult list(SystemSettingQueryVO systemSettingQueryVO);
+
+    /**
+     *
+     * @param systemSettingQueryVO
+     * @return
+     */
+    ServerResult listByPage(SystemSettingQueryVO systemSettingQueryVO);
+
+    /**
+     * 新增数据
+     *
+     * @param systemSettingVO 数据VO
+     * @return 新增结果
+     */
+    ServerResult add(SystemSettingVO systemSettingVO);
+
+    /**
+     * 修改数据
+     *
+     * @param systemSettingVO 数据VO
+     * @return 编辑结果
+     */
+    ServerResult edit(SystemSettingVO systemSettingVO);
+
+    /**
+     * 通过主键删除数据
+     *
+     * @param systemSettingQueryVO 筛选条件
+     * @return 是否成功
+     */
+    ServerResult deleteById(SystemSettingQueryVO systemSettingQueryVO);
+
+}
diff --git a/src/main/java/com/order/erp/service/admin/AdminUserService.java b/src/main/java/com/order/erp/service/admin/AdminUserService.java
index f2a4957..38eb2a6 100644
--- a/src/main/java/com/order/erp/service/admin/AdminUserService.java
+++ b/src/main/java/com/order/erp/service/admin/AdminUserService.java
@@ -2,6 +2,7 @@ package com.order.erp.service.admin;
 
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.order.erp.common.constant.ServerResult;
+import com.order.erp.domain.RoleEnum;
 import com.order.erp.domain.dto.admin.AdminUserDO;
 import com.order.erp.domain.vo.UserVO;
 import com.order.erp.domain.vo.admin.*;
@@ -68,6 +69,13 @@ public interface AdminUserService extends IService<AdminUserDO> {
     ServerResult<AdminResultVO> isAdmin(String userName);
 
     /**
+     *
+     * @param userName
+     * @return
+     */
+    ServerResult<RoleEnum> getRoleBy(String userName);
+
+    /**
      * 修改密码
      *
      * @param pwdVO
diff --git a/src/main/java/com/order/erp/service/admin/impl/AdminUserServiceImpl.java b/src/main/java/com/order/erp/service/admin/impl/AdminUserServiceImpl.java
index ac82356..3c47176 100644
--- a/src/main/java/com/order/erp/service/admin/impl/AdminUserServiceImpl.java
+++ b/src/main/java/com/order/erp/service/admin/impl/AdminUserServiceImpl.java
@@ -14,7 +14,6 @@ import com.order.erp.common.constant.ServerResult;
 import com.order.erp.common.constant.ServerResultCode;
 import com.order.erp.common.exception.BusinessException;
 import com.order.erp.common.utils.ImgCaptchaUtils;
-import com.order.erp.common.utils.SecurityUtils;
 import com.order.erp.common.utils.SmsUtils;
 import com.order.erp.common.utils.TransactionHelper;
 import com.order.erp.config.DataScope;
@@ -255,7 +254,7 @@ public class AdminUserServiceImpl extends ServiceImpl<AdminUserMapper, AdminUser
 
     @Override
     public ServerResult<AdminResultVO> isAdmin(String userName) {
-        UserVO user = findByUserName(SecurityUtils.getUsername());
+        UserVO user = findByUserName(userName);
         if (Objects.isNull(user)) {
             throw new BusinessException("用户不存在");
         }
@@ -273,6 +272,36 @@ public class AdminUserServiceImpl extends ServiceImpl<AdminUserMapper, AdminUser
         return ServerResult.success(AdminResultVO.builder().isAdmin(result.get()).userVO(user).build());
     }
 
+
+    @Override
+    public ServerResult<RoleEnum> getRoleBy(String userName) {
+        UserVO user = findByUserName(userName);
+        if (Objects.isNull(user)) {
+            throw new BusinessException("用户不存在");
+        }
+        List<AdminUserRoleDO> userRoleDOList = userRoleService.list(new LambdaQueryWrapper<AdminUserRoleDO>()
+                .eq(AdminUserRoleDO::getUserId, user.getId()));
+        if (CollectionUtils.isEmpty(userRoleDOList)) {
+            throw new BusinessException("用户没有创建角色");
+        }
+        AtomicReference<RoleEnum> result = new AtomicReference<RoleEnum>(RoleEnum.ADMIN);
+        userRoleDOList.forEach(x -> {
+            if (RoleEnum.ADMIN.getId().equals(x.getRoleId())) {
+                result.set(RoleEnum.ADMIN);
+            }
+            if (RoleEnum.BUSINESS_USER.getId().equals(x.getRoleId())) {
+                result.set(RoleEnum.BUSINESS_USER);
+            }
+            if (RoleEnum.TRACKER_USER.getId().equals(x.getRoleId())) {
+                result.set(RoleEnum.TRACKER_USER);
+            }
+            if (RoleEnum.INSPECT_USER.getId().equals(x.getRoleId())) {
+                result.set(RoleEnum.INSPECT_USER);
+            }
+        });
+        return ServerResult.success(result.get());
+    }
+
     /**
      * 通过主键删除数据
      *
diff --git a/src/main/java/com/order/erp/service/impl/SystemSettingServiceImpl.java b/src/main/java/com/order/erp/service/impl/SystemSettingServiceImpl.java
new file mode 100644
index 0000000..42f0810
--- /dev/null
+++ b/src/main/java/com/order/erp/service/impl/SystemSettingServiceImpl.java
@@ -0,0 +1,169 @@
+package com.order.erp.service.impl;
+
+import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.collection.CollUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
+import com.baomidou.mybatisplus.core.toolkit.StringUtils;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.order.erp.common.constant.Constant;
+import com.order.erp.common.constant.ServerResult;
+import com.order.erp.domain.dto.BaseDO;
+import com.order.erp.domain.dto.SystemSettingDO;
+import com.order.erp.domain.vo.SystemSettingQueryVO;
+import com.order.erp.domain.vo.SystemSettingResultVO;
+import com.order.erp.domain.vo.SystemSettingVO;
+import com.order.erp.mapper.SystemSettingMapper;
+import com.order.erp.service.SystemSettingService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.BeanUtils;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+import java.util.Objects;
+import java.util.stream.Collectors;
+
+/**
+ * 系统配置(SystemSetting)表服务实现类
+ *
+ * @author makejava
+ * @since 2023-12-05 13:44:04
+ */
+@Slf4j
+@Service
+public class SystemSettingServiceImpl extends ServiceImpl<SystemSettingMapper, SystemSettingDO> implements SystemSettingService {
+
+
+    /**
+     * 通过ID查询单条数据
+     * <p>
+     * systemSettingQueryVO 主键
+     *
+     * @return 实例对象
+     */
+    @Override
+    public ServerResult queryById(SystemSettingQueryVO systemSettingQueryVO) {
+        if (Objects.isNull(systemSettingQueryVO.getId())) {
+            return ServerResult.fail("id 不能为空");
+        }
+        SystemSettingDO SystemSettingDo = getById(systemSettingQueryVO.getId());
+        if (Objects.isNull(SystemSettingDo)) {
+            return ServerResult.success(null);
+        }
+        return ServerResult.success(BeanUtil.copyProperties(SystemSettingDo, SystemSettingVO.class));
+    }
+
+    /**
+     * 分页查询
+     *
+     * @param queryVO 筛选条件
+     * @return 查询结果
+     */
+    @Override
+    public ServerResult list(SystemSettingQueryVO queryVO) {
+        LambdaQueryWrapper<SystemSettingDO> queryWrapper = buildQueryByParam(queryVO);
+        return ServerResult.success(list(queryWrapper));
+    }
+
+    /**
+     * @param queryVO
+     * @return
+     */
+    @Override
+    public ServerResult listByPage(SystemSettingQueryVO queryVO) {
+        LambdaQueryWrapper<SystemSettingDO> queryWrapper = buildQueryByParam(queryVO);
+        Page page = new Page<>(queryVO.getPage(), queryVO.getPageSize());
+        IPage<SystemSettingDO> iPage = page(page, queryWrapper);
+
+        Page<SystemSettingResultVO> webVOPage = new Page<>();
+        List<SystemSettingDO> systemSettingDOS = iPage.getRecords();
+        if (CollectionUtils.isNotEmpty(systemSettingDOS)) {
+            List<SystemSettingResultVO> queryVos = systemSettingDOS.stream().map(x -> {
+                SystemSettingResultVO resultVO = new SystemSettingResultVO();
+                BeanUtils.copyProperties(x, resultVO);
+                return resultVO;
+            }).collect(Collectors.toList());
+            webVOPage.setRecords(queryVos);
+        }
+        BeanUtils.copyProperties(page, webVOPage, "records");
+        return ServerResult.success(webVOPage);
+    }
+
+    /**
+     * @param queryVO
+     * @return
+     */
+    private LambdaQueryWrapper<SystemSettingDO> buildQueryByParam(SystemSettingQueryVO queryVO) {
+        return new LambdaQueryWrapper<SystemSettingDO>()
+                .eq(BaseDO::getEnableFlag, Constant.ENABLE_TEN)
+                .eq(StringUtils.isNotBlank(queryVO.getSettingCode()), SystemSettingDO::getSettingCode, queryVO.getSettingCode())
+                .eq(Objects.nonNull(queryVO.getSettingType()), SystemSettingDO::getSettingType, queryVO.getSettingType())
+                .eq(StringUtils.isNotBlank(queryVO.getRelationCode()), SystemSettingDO::getRelationCode, queryVO.getRelationCode());
+    }
+
+
+    /**
+     * 新增数据
+     *
+     * @param systemSettingVO 实例对象
+     * @return 实例对象
+     */
+    @Override
+    public ServerResult add(SystemSettingVO systemSettingVO) {
+        //todo 校验
+        if (Objects.nonNull(systemSettingVO.getId())) {
+            systemSettingVO.setId(null);
+        }
+        SystemSettingDO systemSettingDo = BeanUtil.copyProperties(systemSettingVO, SystemSettingDO.class);
+
+        save(systemSettingDo);
+
+        return ServerResult.success();
+    }
+
+    /**
+     * 修改数据
+     *
+     * @param systemSettingVO 实例对象
+     * @return 实例对象
+     */
+    @Override
+    public ServerResult edit(SystemSettingVO systemSettingVO) {
+        //todo 校验
+        if (Objects.isNull(systemSettingVO.getId())) {
+            return ServerResult.fail("id 不能为空");
+        }
+        SystemSettingDO systemSettingDo = BeanUtil.copyProperties(systemSettingVO, SystemSettingDO.class);
+
+        updateById(systemSettingDo);
+
+        return ServerResult.success();
+    }
+
+    /**
+     * 通过主键删除数据
+     *
+     * @param systemSettingQueryVO 筛选条件
+     * @return 是否成功
+     */
+    @Override
+    public ServerResult deleteById(SystemSettingQueryVO systemSettingQueryVO) {
+        List<Long> ids = systemSettingQueryVO.getIds();
+        if (CollUtil.isEmpty(ids)) {
+            return ServerResult.fail("ids 参数不能为空");
+        }
+        List<SystemSettingDO> systemSettingList = listByIds(ids);
+        if (CollUtil.isEmpty(systemSettingList)) {
+            return ServerResult.success();
+        }
+        //todo 校验是否可以逻辑删除
+        LambdaUpdateWrapper<SystemSettingDO> updateWrapper = new LambdaUpdateWrapper<SystemSettingDO>()
+                .in(SystemSettingDO::getId, ids)
+                .set(SystemSettingDO::getEnableFlag, Constant.UNABLE_TWENTY);
+        update(updateWrapper);
+        return ServerResult.success();
+    }
+}
diff --git a/src/main/java/com/order/erp/service/order/impl/OrderBaseInfoServiceImpl.java b/src/main/java/com/order/erp/service/order/impl/OrderBaseInfoServiceImpl.java
index bd03ad9..76fb013 100644
--- a/src/main/java/com/order/erp/service/order/impl/OrderBaseInfoServiceImpl.java
+++ b/src/main/java/com/order/erp/service/order/impl/OrderBaseInfoServiceImpl.java
@@ -376,14 +376,27 @@ public class OrderBaseInfoServiceImpl extends ServiceImpl<OrderBaseInfoMapper, O
                         OrderLockFieldEnum.SELECTED.getStatus().equals(reportFields.getIdeaSource())) {
                     map.put("想法来源", reportInfo.getIdeaSource());
                 }
-                if (StringUtils.isNotBlank(reportFields.getManualPreform()) &&
-                        OrderLockFieldEnum.SELECTED.getStatus().equals(reportFields.getManualPreform())) {
-                    map.put("手工初型", reportInfo.getManualPreform());
+                if (StringUtils.isNotBlank(reportFields.getIdeaSourceRate()) &&
+                        OrderLockFieldEnum.SELECTED.getStatus().equals(reportFields.getIdeaSourceRate())) {
+                    map.put("想法来源占比", reportInfo.getIdeaSourceRate());
                 }
-                if (StringUtils.isNotBlank(reportFields.getIdeaManualRate()) &&
-                        OrderLockFieldEnum.SELECTED.getStatus().equals(reportFields.getIdeaManualRate())) {
-                    map.put("想法和手工比例分配", reportInfo.getIdeaManualRate());
+                if (StringUtils.isNotBlank(reportFields.getManualPreform1()) &&
+                        OrderLockFieldEnum.SELECTED.getStatus().equals(reportFields.getManualPreform1())) {
+                    map.put("手工初型1", reportInfo.getManualPreform1());
                 }
+                if (StringUtils.isNotBlank(reportFields.getManualPreform1Rate()) &&
+                        OrderLockFieldEnum.SELECTED.getStatus().equals(reportFields.getManualPreform1Rate())) {
+                    map.put("手工初型1占比", reportInfo.getManualPreform1Rate());
+                }
+                if (StringUtils.isNotBlank(reportFields.getManualPreform2()) &&
+                        OrderLockFieldEnum.SELECTED.getStatus().equals(reportFields.getManualPreform2())) {
+                    map.put("手工初型2", reportInfo.getManualPreform2());
+                }
+                if (StringUtils.isNotBlank(reportFields.getManualPreform2Rate()) &&
+                        OrderLockFieldEnum.SELECTED.getStatus().equals(reportFields.getManualPreform2Rate())) {
+                    map.put("手工初型2占比", reportInfo.getManualPreform2Rate());
+                }
+
             }
             OrderTrackStageVO trackStageInfo = Objects.nonNull(orderInfoResultVO.getTrackStageInfo()) ?
                     orderInfoResultVO.getTrackStageInfo() : new OrderTrackStageVO();
@@ -585,9 +598,13 @@ public class OrderBaseInfoServiceImpl extends ServiceImpl<OrderBaseInfoMapper, O
     private OrderCompletionReportFieldVO report2reportField(OrderCompletionReportVO reportVO) {
         return OrderCompletionReportFieldVO.builder()
                 .orderId(reportVO.getOrderId())
-                .ideaManualRate(Objects.nonNull(reportVO.getIdeaManualRate()) ? reportVO.getIdeaManualRate().toString() : null)
+                .ideaSourceRate(Objects.nonNull(reportVO.getIdeaSourceRate()) ? reportVO.getIdeaSourceRate().toString() : null)
                 .ideaSource(StringUtils.isNotBlank(reportVO.getIdeaSource()) ? reportVO.getIdeaSource() : null)
-                .manualPreform(StringUtils.isNotBlank(reportVO.getManualPreform()) ? reportVO.getManualPreform() : null).build();
+                .manualPreform1(StringUtils.isNotBlank(reportVO.getManualPreform1()) ? reportVO.getManualPreform1() : null)
+                .manualPreform1Rate(Objects.nonNull(reportVO.getManualPreform1Rate()) ? reportVO.getManualPreform1Rate().toString() : null)
+                .manualPreform2(StringUtils.isNotBlank(reportVO.getManualPreform2()) ? reportVO.getManualPreform2() : null)
+                .manualPreform2Rate(Objects.nonNull(reportVO.getManualPreform2Rate()) ? reportVO.getManualPreform2Rate().toString() : null)
+                .build();
     }
 
 
@@ -862,10 +879,19 @@ public class OrderBaseInfoServiceImpl extends ServiceImpl<OrderBaseInfoMapper, O
         if (StringUtils.isBlank(reportInfo.getIdeaSource())) {
             return false;
         }
-        if (StringUtils.isBlank(reportInfo.getManualPreform())) {
+        if (Objects.isNull(reportInfo.getIdeaSourceRate())) {
+            return false;
+        }
+        if (StringUtils.isBlank(reportInfo.getManualPreform1())) {
             return false;
         }
-        if (Objects.isNull(reportInfo.getIdeaManualRate())) {
+        if (Objects.isNull(reportInfo.getManualPreform1Rate())) {
+            return false;
+        }
+        if (StringUtils.isBlank(reportInfo.getManualPreform2())) {
+            return false;
+        }
+        if (Objects.isNull(reportInfo.getManualPreform2Rate())) {
             return false;
         }
         return true;
@@ -1041,6 +1067,15 @@ public class OrderBaseInfoServiceImpl extends ServiceImpl<OrderBaseInfoMapper, O
      * @return
      */
     private LambdaQueryWrapper<OrderBaseInfoDO> buildQueryByParam(OrderBaseInfoQueryVO queryVO) {
+        RoleEnum roleEnum = dataScope.getRole();
+        // 跟单员
+        if (Objects.nonNull(roleEnum) && roleEnum.getId().equals(RoleEnum.TRACKER_USER.getId())) {
+            queryVO.setCreateBy(dataScope.getLoginUserName());
+        }
+        // 业务员
+        if (Objects.nonNull(roleEnum) && roleEnum.getId().equals(RoleEnum.BUSINESS_USER.getId())) {
+            queryVO.setBusinessPerson(dataScope.getLoginUserName());
+        }
         if (StringUtils.isNotBlank(queryVO.getCommitUserPhone())) {
             AdminUserDO userDO = userService.getOne(new LambdaQueryWrapper<AdminUserDO>()
                     .eq(BaseDO::getEnableFlag, Constant.ENABLE_TEN)
@@ -1064,7 +1099,7 @@ public class OrderBaseInfoServiceImpl extends ServiceImpl<OrderBaseInfoMapper, O
             List<OrderCompletionReportDO> reportDOS = reportService.list(new LambdaQueryWrapper<OrderCompletionReportDO>()
                     .eq(BaseDO::getEnableFlag, Constant.ENABLE_TEN)
                     .eq(StringUtils.isNotBlank(queryVO.getIdeaSource()), OrderCompletionReportDO::getIdeaSource, queryVO.getIdeaSource())
-                    .eq(StringUtils.isNotBlank(queryVO.getManualPreform()), OrderCompletionReportDO::getManualPreform, queryVO.getManualPreform()));
+                    .eq(StringUtils.isNotBlank(queryVO.getManualPreform()), OrderCompletionReportDO::getManualPreform1, queryVO.getManualPreform()));
             if (CollectionUtils.isNotEmpty(reportDOS)) {
                 Set<Long> reportOrderIds = reportDOS.stream().map(OrderCompletionReportDO::getOrderId).collect(Collectors.toSet());
                 if (CollectionUtils.isNotEmpty(orderIds)) {
@@ -1142,6 +1177,8 @@ public class OrderBaseInfoServiceImpl extends ServiceImpl<OrderBaseInfoMapper, O
                 .eq(StringUtils.isNotBlank(queryVO.getProjectNo()), OrderBaseInfoDO::getProjectNo, queryVO.getProjectNo())
                 .eq(StringUtils.isNotBlank(queryVO.getProductionDepartment()), OrderBaseInfoDO::getProductionDepartment, queryVO.getProductionDepartment())
                 .ge(StringUtils.isNotBlank(queryVO.getProductionDepartmentConsignStartTime()), OrderBaseInfoDO::getProductionDepartmentConsignTime, queryVO.getProductionDepartmentConsignStartTime())
+                .ge(StringUtils.isNotBlank(queryVO.getCreateBy()), OrderBaseInfoDO::getCreateBy, queryVO.getCreateBy())
+                .ge(StringUtils.isNotBlank(queryVO.getBusinessPerson()), OrderBaseInfoDO::getBusinessPerson, queryVO.getBusinessPerson())
                 .le(StringUtils.isNotBlank(queryVO.getProductionDepartmentConsignEndTime()), OrderBaseInfoDO::getProductionDepartmentConsignTime, queryVO.getProductionDepartmentConsignEndTime())
                 .ge(StringUtils.isNotBlank(queryVO.getOrderHodStartTime()), OrderBaseInfoDO::getOrderHodTime, queryVO.getOrderHodStartTime())
                 .le(StringUtils.isNotBlank(queryVO.getOrderHodEndTime()), OrderBaseInfoDO::getOrderHodTime, queryVO.getOrderHodEndTime())
@@ -1484,6 +1521,9 @@ public class OrderBaseInfoServiceImpl extends ServiceImpl<OrderBaseInfoMapper, O
         if (StringUtils.isNotBlank(baseInfoVO.getPacketType())) {
             baseInfoDO.setPacketType(baseInfoVO.getPacketType());
         }
+        if (StringUtils.isNotBlank(baseInfoVO.getBusinessPerson())) {
+            baseInfoDO.setBusinessPerson(baseInfoVO.getBusinessPerson());
+        }
     }
 
     /**
diff --git a/src/main/java/com/order/erp/service/order/impl/OrderFieldLockApplyServiceImpl.java b/src/main/java/com/order/erp/service/order/impl/OrderFieldLockApplyServiceImpl.java
index 1b822b3..1fea06c 100644
--- a/src/main/java/com/order/erp/service/order/impl/OrderFieldLockApplyServiceImpl.java
+++ b/src/main/java/com/order/erp/service/order/impl/OrderFieldLockApplyServiceImpl.java
@@ -418,9 +418,12 @@ public class OrderFieldLockApplyServiceImpl extends ServiceImpl<OrderFieldLockAp
                 reportService.save(reportDO);
             } else {
                 reportDO.setOrderStatus(OrderStatusEnum.REPORT_AUDIT_PASS.getStatus());
-                reportDO.setIdeaManualRate(Objects.nonNull(reportFieldVO.getIdeaManualRate()) ? Double.valueOf(reportFieldVO.getIdeaManualRate()) : null);
+                reportDO.setIdeaSourceRate(Objects.nonNull(reportFieldVO.getIdeaSourceRate()) ? Double.valueOf(reportFieldVO.getIdeaSourceRate()) : null);
                 reportDO.setIdeaSource(reportFieldVO.getIdeaSource());
-                reportDO.setManualPreform(reportFieldVO.getManualPreform());
+                reportDO.setManualPreform1(reportFieldVO.getManualPreform1());
+                reportDO.setManualPreform1Rate(Objects.nonNull(reportFieldVO.getManualPreform1Rate()) ? Double.valueOf(reportFieldVO.getManualPreform1Rate()) : null);
+                reportDO.setManualPreform2(reportFieldVO.getManualPreform1());
+                reportDO.setManualPreform2Rate(Objects.nonNull(reportFieldVO.getManualPreform2Rate()) ? Double.valueOf(reportFieldVO.getManualPreform2Rate()) : null);
                 reportService.updateById(reportDO);
             }
             orderBaseInfoDO.setOrderStatus(OrderStatusEnum.REPORT_AUDIT_PASS.getStatus());
@@ -476,9 +479,12 @@ public class OrderFieldLockApplyServiceImpl extends ServiceImpl<OrderFieldLockAp
      */
     private OrderCompletionReportDO reportField2reportDo(OrderCompletionReportFieldVO reportFieldVO) {
         return OrderCompletionReportDO.builder()
-                .ideaManualRate(StringUtils.isNotBlank(reportFieldVO.getIdeaManualRate()) ? Double.valueOf(reportFieldVO.getIdeaManualRate()) : null)
+                .ideaSourceRate(StringUtils.isNotBlank(reportFieldVO.getIdeaSourceRate()) ? Double.valueOf(reportFieldVO.getIdeaSourceRate()) : null)
                 .ideaSource(reportFieldVO.getIdeaSource())
-                .manualPreform(reportFieldVO.getManualPreform())
+                .manualPreform1(reportFieldVO.getManualPreform1())
+                .manualPreform1Rate(StringUtils.isNotBlank(reportFieldVO.getManualPreform1Rate()) ? Double.valueOf(reportFieldVO.getManualPreform1Rate()) : null)
+                .manualPreform2(reportFieldVO.getManualPreform2())
+                .manualPreform2Rate(StringUtils.isNotBlank(reportFieldVO.getManualPreform2Rate()) ? Double.valueOf(reportFieldVO.getManualPreform2Rate()) : null)
                 .orderId(reportFieldVO.getOrderId())
                 .build();
     }