From 47d330d27fb88e85a40e64e5423f73b0b29c088e Mon Sep 17 00:00:00 2001
From: “djh” <“3298565835@qq.com”>
Date: 星期一, 17 三月 2025 17:03:22 +0800
Subject: [PATCH] 修改

---
 ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml                       |    3 
 ruoyi-common/src/main/java/com/ruoyi/common/core/domain/BaseEntity.java               |    6 
 signature/src/main/java/com/gkhy/sign/entity/SignatureType.java                       |    4 
 signature/src/main/java/com/gkhy/sign/mapper/SignatureTemplateMapper.java             |    5 
 signature/src/main/java/com/gkhy/sign/service/SignatureItemService.java               |    2 
 signature/src/main/java/com/gkhy/sign/dto/rep/SignatureFlowRep.java                   |   18 +
 signature/src/main/java/com/gkhy/sign/dto/rep/SignatureTemplateRep.java               |    9 
 signature/src/main/java/com/gkhy/sign/service/SignatureTemplateService.java           |    5 
 signature/src/main/java/com/gkhy/sign/service/impl/SignatureTemplateServiceImpl.java  |   15 
 signature/src/main/java/com/gkhy/sign/controller/web/SignatureTemplateController.java |   10 
 ruoyi-admin/src/main/resources/application-pro.yml                                    |    2 
 signature/src/main/java/com/gkhy/sign/dto/req/SignatureFlowSignReq.java               |   43 +++
 ruoyi-admin/src/main/java/com/ruoyi/RuoYiApplication.java                             |    4 
 ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/SysLoginService.java    |   63 ++++
 signature/src/main/java/com/gkhy/sign/service/impl/SignatureItemServiceImpl.java      |   27 +
 signature/src/main/java/com/gkhy/sign/controller/web/SignatureFlowController.java     |   23 +
 signature/src/main/java/com/gkhy/sign/entity/SignatureTemplate.java                   |    1 
 signature/src/main/java/com/gkhy/sign/controller/web/SignatureItemController.java     |   10 
 signature/src/main/resources/mapper/sign/SignatureTemplateMapper.xml                  |    9 
 signature/src/main/java/com/gkhy/sign/controller/app/AppSignatureItemController.java  |   32 ++
 signature/src/main/java/com/gkhy/sign/controller/app/AppSignatureFlowController.java  |   35 ++
 signature/src/main/resources/mapper/sign/SignatureItemMapper.xml                      |   70 +++--
 signature/src/main/java/com/gkhy/sign/entity/SignatureFlow.java                       |   31 +
 signature/src/main/java/com/gkhy/sign/mapper/SignatureFlowMapper.java                 |    8 
 signature/src/main/java/com/gkhy/sign/service/SignatureFlowService.java               |    5 
 ruoyi-admin/src/main/resources/application.yml                                        |    2 
 signature/src/main/java/com/gkhy/sign/mapper/SignatureItemMapper.java                 |    5 
 signature/src/main/resources/mapper/sign/SignatureFlowMapper.xml                      |   39 ++
 signature/src/main/java/com/gkhy/sign/service/SignatureTypeService.java               |    2 
 signature/src/main/java/com/gkhy/sign/service/impl/SignatureFlowServiceImpl.java      |   68 ++++
 signature/src/main/java/com/gkhy/sign/controller/app/AppLoginController.java          |   39 ++
 signature/src/main/java/com/gkhy/sign/mapper/SignatureTypeMapper.java                 |    5 
 signature/src/main/java/com/gkhy/sign/service/impl/SignatureTypeServiceImpl.java      |    8 
 ruoyi-framework/src/main/java/com/ruoyi/framework/config/SecurityConfig.java          |    4 
 signature/src/main/java/com/gkhy/sign/controller/web/SignatureTypeController.java     |   20 
 signature/src/main/java/com/gkhy/sign/dto/req/SignatureFlowAddReq.java                |  132 +++++++++
 signature/src/main/java/com/gkhy/sign/dto/rep/SignatureItemRep.java                   |    7 
 signature/src/main/resources/mapper/sign/SignatureTypeMapper.xml                      |   10 
 ruoyi-admin/src/main/resources/application-dev.yml                                    |    6 
 39 files changed, 670 insertions(+), 117 deletions(-)

diff --git a/ruoyi-admin/src/main/java/com/ruoyi/RuoYiApplication.java b/ruoyi-admin/src/main/java/com/ruoyi/RuoYiApplication.java
index 32eb6f1..2c161c9 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/RuoYiApplication.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/RuoYiApplication.java
@@ -1,5 +1,6 @@
 package com.ruoyi;
 
+import org.mybatis.spring.annotation.MapperScan;
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
 import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
@@ -9,7 +10,8 @@
  * 
  * @author ruoyi
  */
-@SpringBootApplication(exclude = { DataSourceAutoConfiguration.class })
+@SpringBootApplication(exclude = { DataSourceAutoConfiguration.class },scanBasePackages = {"com.gkhy","com.ruoyi"})
+@MapperScan("com.gkhy.sign.mapper")
 public class RuoYiApplication
 {
     public static void main(String[] args)
diff --git a/ruoyi-admin/src/main/resources/application-dev.yml b/ruoyi-admin/src/main/resources/application-dev.yml
index 4395f48..1bfc956 100644
--- a/ruoyi-admin/src/main/resources/application-dev.yml
+++ b/ruoyi-admin/src/main/resources/application-dev.yml
@@ -24,9 +24,9 @@
     druid:
       # 主库数据源
       master:
-        url: jdbc:mysql://localhost:3306/signature?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
+        url: jdbc:mysql://192.168.2.3:7006/signature?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
         username: root
-        password: password
+        password: 2farwL3yPXfbH2AP
       # 从库数据源
       slave:
         # 从数据源开关/默认关闭
@@ -80,7 +80,7 @@
   # redis 配置
   redis:
     # 地址
-    host: 192.168.2.6
+    host: 192.168.2.3
     # 端口,默认为6379
     port: 6379
     # 数据库索引
diff --git a/ruoyi-admin/src/main/resources/application-pro.yml b/ruoyi-admin/src/main/resources/application-pro.yml
index 2c3d87c..eeb1cb4 100644
--- a/ruoyi-admin/src/main/resources/application-pro.yml
+++ b/ruoyi-admin/src/main/resources/application-pro.yml
@@ -24,7 +24,7 @@
         druid:
             # 主库数据源
             master:
-                url: jdbc:mysql://localhost:3306/ry-vue?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
+                url: jdbc:mysql://localhost:3306/signature?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
                 username: root
                 password: password
             # 从库数据源
diff --git a/ruoyi-admin/src/main/resources/application.yml b/ruoyi-admin/src/main/resources/application.yml
index a32b0c2..973681a 100644
--- a/ruoyi-admin/src/main/resources/application.yml
+++ b/ruoyi-admin/src/main/resources/application.yml
@@ -109,7 +109,7 @@
   # 是否开启swagger
   enabled: true
   # 请求前缀
-  pathMapping: /dev-api
+  pathMapping: /
 
 # 防止XSS攻击
 xss:
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/BaseEntity.java b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/BaseEntity.java
index 15bf66b..d138a3b 100644
--- a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/BaseEntity.java
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/BaseEntity.java
@@ -4,6 +4,9 @@
 import java.util.Date;
 import java.util.HashMap;
 import java.util.Map;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
 import com.fasterxml.jackson.annotation.JsonFormat;
 import com.fasterxml.jackson.annotation.JsonIgnore;
 import com.fasterxml.jackson.annotation.JsonInclude;
@@ -19,6 +22,7 @@
 
     /** 搜索值 */
     @JsonIgnore
+    @TableField(exist = false)
     private String searchValue;
 
     /** 创建者 */
@@ -36,10 +40,12 @@
     private Date updateTime;
 
     /** 备注 */
+    @TableField(exist = false)
     private String remark;
 
     /** 请求参数 */
     @JsonInclude(JsonInclude.Include.NON_EMPTY)
+    @TableField(exist = false)
     private Map<String, Object> params;
 
     public String getSearchValue()
diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/config/SecurityConfig.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/config/SecurityConfig.java
index 2d3c0f6..a68e862 100644
--- a/ruoyi-framework/src/main/java/com/ruoyi/framework/config/SecurityConfig.java
+++ b/ruoyi-framework/src/main/java/com/ruoyi/framework/config/SecurityConfig.java
@@ -101,7 +101,7 @@
             .csrf(csrf -> csrf.disable())
             // 禁用HTTP响应标头
             .headers((headersCustomizer) -> {
-                headersCustomizer.cacheControl(cache -> cache.disable()).frameOptions(options -> options.sameOrigin());
+                headersCustomizer.cacheControl(cache -> cache.disable()).frameOptions(options -> options.disable());
             })
             // 认证失败处理类
             .exceptionHandling(exception -> exception.authenticationEntryPoint(unauthorizedHandler))
@@ -111,7 +111,7 @@
             .authorizeHttpRequests((requests) -> {
                 permitAllUrl.getUrls().forEach(url -> requests.antMatchers(url).permitAll());
                 // 对于登录login 注册register 验证码captchaImage 允许匿名访问
-                requests.antMatchers("/login", "/register", "/captchaImage").permitAll()
+                requests.antMatchers("/login", "/register", "/captchaImage","/app/login").permitAll()
                     // 静态资源,可匿名访问
                     .antMatchers(HttpMethod.GET, "/", "/*.html", "/**/*.html", "/**/*.css", "/**/*.js", "/profile/**").permitAll()
                     .antMatchers("/swagger-ui.html", "/swagger-resources/**", "/webjars/**", "/*/api-docs", "/druid/**").permitAll()
diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/SysLoginService.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/SysLoginService.java
index fe16427..d6516c9 100644
--- a/ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/SysLoginService.java
+++ b/ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/SysLoginService.java
@@ -1,6 +1,10 @@
 package com.ruoyi.framework.web.service;
 
 import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
+
+import com.ruoyi.common.core.domain.model.LoginBody;
+import com.ruoyi.common.utils.SecurityUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.authentication.AuthenticationManager;
 import org.springframework.security.authentication.BadCredentialsException;
@@ -51,6 +55,9 @@
 
     @Autowired
     private ISysConfigService configService;
+
+    @Autowired
+    private HttpServletRequest request;
 
     /**
      * 登录验证
@@ -157,12 +164,12 @@
             throw new UserPasswordNotMatchException();
         }
         // IP黑名单校验
-        String blackStr = configService.selectConfigByKey("sys.login.blackIPList");
-        if (IpUtils.isMatchedIp(blackStr, IpUtils.getIpAddr()))
-        {
-            AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL, MessageUtils.message("login.blocked")));
-            throw new BlackListException();
-        }
+//        String blackStr = configService.selectConfigByKey("sys.login.blackIPList");
+//        if (IpUtils.isMatchedIp(blackStr, IpUtils.getIpAddr()))
+//        {
+//            AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL, MessageUtils.message("login.blocked")));
+//            throw new BlackListException();
+//        }
     }
 
     /**
@@ -178,4 +185,48 @@
         sysUser.setLoginDate(DateUtils.getNowDate());
         userService.updateUserProfile(sysUser);
     }
+
+    public String appLogin(String username, String password) {
+        // 验证码校验
+//        validateCaptcha(username, code, uuid);
+        // 登录前置校验
+        loginPreCheck(username, password);
+        // 用户验证
+        Authentication authentication = null;
+        try
+        {
+            UsernamePasswordAuthenticationToken authenticationToken = new UsernamePasswordAuthenticationToken(username, password);
+            AuthenticationContextHolder.setContext(authenticationToken);
+            // 该方法会去调用UserDetailsServiceImpl.loadUserByUsername
+            authentication = authenticationManager.authenticate(authenticationToken);
+        }
+        catch (Exception e)
+        {
+            if (e instanceof BadCredentialsException)
+            {
+                AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL, MessageUtils.message("user.password.not.match")));
+                throw new UserPasswordNotMatchException();
+            }
+            else
+            {
+                AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL, e.getMessage()));
+                throw new ServiceException(e.getMessage());
+            }
+        }
+        finally
+        {
+            AuthenticationContextHolder.clearContext();
+        }
+        AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_SUCCESS, MessageUtils.message("user.login.success")));
+        LoginUser loginUser = (LoginUser) authentication.getPrincipal();
+        recordLoginInfo(loginUser.getUserId());
+        // 生成token
+        return tokenService.createToken(loginUser);
+    }
+
+    public void logout() {
+        LoginUser loginUser = SecurityUtils.getLoginUser();
+        tokenService.delLoginUser(loginUser.getToken());
+
+    }
 }
diff --git a/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml b/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml
index 5b2a7f2..9f868f3 100644
--- a/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml
+++ b/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml
@@ -66,6 +66,9 @@
 		<if test="userName != null and userName != ''">
 			AND u.user_name like concat('%', #{userName}, '%')
 		</if>
+		  <if test="nickName != null and nickName != ''">
+			  and u.nick_name like concat('%',#{nickName},'%')
+		  </if>
 		<if test="status != null and status != ''">
 			AND u.status = #{status}
 		</if>
diff --git a/signature/src/main/java/com/gkhy/sign/controller/app/AppLoginController.java b/signature/src/main/java/com/gkhy/sign/controller/app/AppLoginController.java
new file mode 100644
index 0000000..6dd2be7
--- /dev/null
+++ b/signature/src/main/java/com/gkhy/sign/controller/app/AppLoginController.java
@@ -0,0 +1,39 @@
+package com.gkhy.sign.controller.app;
+
+import com.ruoyi.common.constant.Constants;
+import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.common.core.domain.model.LoginBody;
+import com.ruoyi.framework.web.service.SysLoginService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+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;
+
+@Api(tags = "APP用户登录前端控制器")
+@RestController
+@RequestMapping("/app")
+public class AppLoginController {
+    @Autowired
+    private SysLoginService sysLoginService;
+
+    @ApiOperation(value = "用户登录")
+    @PostMapping("/login")
+    public AjaxResult login(@RequestBody LoginBody loginBody){
+        AjaxResult ajax = AjaxResult.success();
+        // 生成令牌
+        String token = sysLoginService.appLogin(loginBody.getUsername(), loginBody.getPassword());
+        ajax.put(Constants.TOKEN, token);
+        return ajax;
+    }
+
+    @ApiOperation(value = "用户退出")
+    @PostMapping("/logout")
+    public AjaxResult logout(){
+        sysLoginService.logout();
+        return AjaxResult.success();
+    }
+}
+
diff --git a/signature/src/main/java/com/gkhy/sign/controller/app/AppSignatureFlowController.java b/signature/src/main/java/com/gkhy/sign/controller/app/AppSignatureFlowController.java
new file mode 100644
index 0000000..3fbff67
--- /dev/null
+++ b/signature/src/main/java/com/gkhy/sign/controller/app/AppSignatureFlowController.java
@@ -0,0 +1,35 @@
+package com.gkhy.sign.controller.app;
+
+import com.gkhy.sign.dto.req.SignatureFlowSignReq;
+import com.gkhy.sign.service.SignatureFlowService;
+import com.ruoyi.common.core.controller.BaseController;
+import com.ruoyi.common.core.domain.AjaxResult;
+import io.swagger.annotations.Api;
+import org.springframework.beans.factory.annotation.Autowired;
+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;
+
+@Api(tags = "app端签名管理")
+@RestController
+@RequestMapping("/app/sign")
+public class AppSignatureFlowController extends BaseController {
+
+    @Autowired
+    private SignatureFlowService signatureFlowService;
+
+
+    /**
+     * 保存签名
+     */
+    @PostMapping("/save/sign")
+    public AjaxResult save(@RequestBody SignatureFlowSignReq signatureFlowReq){
+        return toAjax(signatureFlowService.saveSignatureFlow(signatureFlowReq));
+    }
+
+
+
+
+
+}
diff --git a/signature/src/main/java/com/gkhy/sign/controller/app/AppSignatureItemController.java b/signature/src/main/java/com/gkhy/sign/controller/app/AppSignatureItemController.java
new file mode 100644
index 0000000..df27b3e
--- /dev/null
+++ b/signature/src/main/java/com/gkhy/sign/controller/app/AppSignatureItemController.java
@@ -0,0 +1,32 @@
+package com.gkhy.sign.controller.app;
+
+import com.gkhy.sign.dto.req.SignatureItemReq;
+import com.gkhy.sign.service.SignatureItemService;
+import com.ruoyi.common.core.controller.BaseController;
+import com.ruoyi.common.core.page.TableDataInfo;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+@Api(tags = "app端签署项目管理")
+@RestController
+@RequestMapping("/app/item")
+public class AppSignatureItemController extends BaseController {
+    @Autowired
+    private SignatureItemService signatureItemService;
+
+    /**
+     * 查询签署项目列表
+     */
+    @GetMapping("/list")
+    @ApiOperation(value = "查询签署项目列表")
+    public TableDataInfo list(SignatureItemReq signatureItem) {
+        startPage();
+        return getDataTable(signatureItemService.selectItemList(signatureItem));
+    }
+
+
+}
diff --git a/signature/src/main/java/com/gkhy/sign/controller/SignatureFlowController.java b/signature/src/main/java/com/gkhy/sign/controller/web/SignatureFlowController.java
similarity index 67%
rename from signature/src/main/java/com/gkhy/sign/controller/SignatureFlowController.java
rename to signature/src/main/java/com/gkhy/sign/controller/web/SignatureFlowController.java
index 91b22ba..bfdc7e4 100644
--- a/signature/src/main/java/com/gkhy/sign/controller/SignatureFlowController.java
+++ b/signature/src/main/java/com/gkhy/sign/controller/web/SignatureFlowController.java
@@ -1,5 +1,7 @@
-package com.gkhy.sign.controller;
+package com.gkhy.sign.controller.web;
 
+import com.gkhy.sign.dto.req.SignatureFlowAddReq;
+import com.gkhy.sign.dto.req.SignatureFlowSignReq;
 import com.gkhy.sign.dto.req.SignatureItemReq;
 import com.gkhy.sign.entity.SignatureFlow;
 import com.gkhy.sign.entity.SignatureItem;
@@ -15,7 +17,7 @@
 import org.springframework.web.bind.annotation.*;
 
 @RestController
-@Api(value = "签名流转管理")
+@Api(tags = "签名流转管理")
 @RequestMapping("/flow")
 public class SignatureFlowController extends BaseController {
 
@@ -43,5 +45,22 @@
         return toAjax(signatureFlowService.insertSignatureFlow(signatureFlow));
     }
 
+//    /**
+//     * 保存签名
+//     */
+//    @PostMapping("/save/sign")
+//    public AjaxResult save(@RequestBody SignatureFlowSignReq signatureFlowReq){
+//        return toAjax(signatureFlowService.saveSignatureFlow(signatureFlowReq));
+//    }
+
+    /**
+     * 归档
+     * @param signatureFlow
+     * @return
+     */
+    @PostMapping("/returnFile")
+    public AjaxResult returnFile(@RequestBody SignatureFlow signatureFlow){
+        return toAjax(signatureFlowService.returnFile(signatureFlow));
+    }
 
 }
diff --git a/signature/src/main/java/com/gkhy/sign/controller/SignatureItemController.java b/signature/src/main/java/com/gkhy/sign/controller/web/SignatureItemController.java
similarity index 88%
rename from signature/src/main/java/com/gkhy/sign/controller/SignatureItemController.java
rename to signature/src/main/java/com/gkhy/sign/controller/web/SignatureItemController.java
index 10f823a..50b1bce 100644
--- a/signature/src/main/java/com/gkhy/sign/controller/SignatureItemController.java
+++ b/signature/src/main/java/com/gkhy/sign/controller/web/SignatureItemController.java
@@ -1,4 +1,4 @@
-package com.gkhy.sign.controller;
+package com.gkhy.sign.controller.web;
 
 import com.gkhy.sign.dto.req.SignatureItemReq;
 import com.gkhy.sign.entity.SignatureItem;
@@ -14,7 +14,7 @@
 import org.springframework.web.bind.annotation.*;
 
 @RestController
-@Api(value = "签署项目管理")
+@Api(tags = "签署项目管理")
 @RequestMapping("/item")
 public class SignatureItemController extends BaseController {
 
@@ -53,10 +53,10 @@
     /**
      * 删除签署项目
      */
-    @PostMapping("/delete")
+    @PostMapping("/delete/{id}")
     @ApiOperation(value = "删除签署项目")
-    public AjaxResult remove(@RequestBody Long[] ids) {
-        return toAjax(signatureItemService.deleteItem(ids));
+    public AjaxResult remove(@PathVariable("id") Integer id) {
+        return toAjax(signatureItemService.deleteItem(id));
     }
 
 
diff --git a/signature/src/main/java/com/gkhy/sign/controller/SignatureTemplateController.java b/signature/src/main/java/com/gkhy/sign/controller/web/SignatureTemplateController.java
similarity index 91%
rename from signature/src/main/java/com/gkhy/sign/controller/SignatureTemplateController.java
rename to signature/src/main/java/com/gkhy/sign/controller/web/SignatureTemplateController.java
index c8112d8..e73723b 100644
--- a/signature/src/main/java/com/gkhy/sign/controller/SignatureTemplateController.java
+++ b/signature/src/main/java/com/gkhy/sign/controller/web/SignatureTemplateController.java
@@ -1,4 +1,4 @@
-package com.gkhy.sign.controller;
+package com.gkhy.sign.controller.web;
 
 import com.gkhy.sign.entity.SignatureTemplate;
 import com.gkhy.sign.entity.SignatureType;
@@ -13,7 +13,7 @@
 import org.springframework.web.bind.annotation.*;
 
 @RestController
-@Api(value = "签署模版管理")
+@Api(tags = "签署模版管理")
 @RequestMapping("/template")
 public class SignatureTemplateController extends BaseController {
 
@@ -52,10 +52,10 @@
     /**
      * 删除签署模版
      */
-    @PostMapping("/delete")
+    @PostMapping("/delete/{id}")
     @ApiOperation(value = "删除签署模版")
-    public AjaxResult remove(@RequestBody Long[] ids) {
-        return toAjax(signatureTemplateService.deleteTemplate(ids));
+    public AjaxResult remove(@PathVariable("id") Long id) {
+        return toAjax(signatureTemplateService.deleteTemplate(id));
     }
 
 
diff --git a/signature/src/main/java/com/gkhy/sign/controller/SignatureTypeController.java b/signature/src/main/java/com/gkhy/sign/controller/web/SignatureTypeController.java
similarity index 75%
rename from signature/src/main/java/com/gkhy/sign/controller/SignatureTypeController.java
rename to signature/src/main/java/com/gkhy/sign/controller/web/SignatureTypeController.java
index 45a0e9e..697b89a 100644
--- a/signature/src/main/java/com/gkhy/sign/controller/SignatureTypeController.java
+++ b/signature/src/main/java/com/gkhy/sign/controller/web/SignatureTypeController.java
@@ -1,7 +1,8 @@
-package com.gkhy.sign.controller;
+package com.gkhy.sign.controller.web;
 
 import com.gkhy.sign.entity.SignatureType;
 import com.gkhy.sign.service.SignatureTypeService;
+import com.ruoyi.common.annotation.Anonymous;
 import com.ruoyi.common.core.controller.BaseController;
 import com.ruoyi.common.core.domain.AjaxResult;
 import com.ruoyi.common.core.page.TableDataInfo;
@@ -13,7 +14,7 @@
 
 
 @RestController
-@Api(value = "签署类型管理")
+@Api(tags = "签署类型管理")
 @RequestMapping("/type")
 public class SignatureTypeController extends BaseController {
 
@@ -24,7 +25,8 @@
      * 查询签署类别列表
      */
     @GetMapping("/list")
-    @ApiOperation(value = "查询签署类别列表")
+    @ApiOperation("查询签署类别列表")
+    @Anonymous
     public AjaxResult list(SignatureType signatureType) {
         return success(signatureTypeService.selectTypeList(signatureType));
     }
@@ -33,7 +35,7 @@
      * 新增签署类别
      */
     @PostMapping("/insert")
-    @ApiOperation(value = "新增签署类别")
+    @ApiOperation("新增签署类别")
     public AjaxResult add(@Validated @RequestBody SignatureType signatureType) {
         return toAjax(signatureTypeService.insertSignatureType(signatureType));
     }
@@ -42,7 +44,7 @@
      * 修改签署类别
      */
     @PostMapping("/update")
-    @ApiOperation(value = "修改签署类别")
+    @ApiOperation("修改签署类别")
     public AjaxResult edit(@RequestBody SignatureType signatureType) {
         return toAjax(signatureTypeService.updateSignatureType(signatureType));
     }
@@ -50,10 +52,10 @@
     /**
      * 删除签署类别
      */
-    @PostMapping("/delete")
-    @ApiOperation(value = "删除签署类别")
-    public AjaxResult remove(@RequestBody Long[] ids) {
-        return toAjax(signatureTypeService.deleteType(ids));
+    @PostMapping("/delete/{id}")
+    @ApiOperation("删除签署类别")
+    public AjaxResult remove(@PathVariable("id") Integer id) {
+        return toAjax(signatureTypeService.deleteType(id));
     }
 
 
diff --git a/signature/src/main/java/com/gkhy/sign/dto/rep/SignatureFlowRep.java b/signature/src/main/java/com/gkhy/sign/dto/rep/SignatureFlowRep.java
index 2fae2cd..76522a5 100644
--- a/signature/src/main/java/com/gkhy/sign/dto/rep/SignatureFlowRep.java
+++ b/signature/src/main/java/com/gkhy/sign/dto/rep/SignatureFlowRep.java
@@ -15,6 +15,7 @@
     private String userName;
 
     private Integer deptId;
+    private String deptName;
 
     private Integer  signUserId;
 
@@ -25,6 +26,7 @@
 
     private String signFile;
     private Integer signStatus;
+    private Integer sort;
 
     public Integer getItemId() {
         return itemId;
@@ -56,6 +58,14 @@
 
     public void setDeptId(Integer deptId) {
         this.deptId = deptId;
+    }
+
+    public String getDeptName() {
+        return deptName;
+    }
+
+    public void setDeptName(String deptName) {
+        this.deptName = deptName;
     }
 
     public Integer getSignUserId() {
@@ -105,4 +115,12 @@
     public void setSignStatus(Integer signStatus) {
         this.signStatus = signStatus;
     }
+
+    public Integer getSort() {
+        return sort;
+    }
+
+    public void setSort(Integer sort) {
+        this.sort = sort;
+    }
 }
diff --git a/signature/src/main/java/com/gkhy/sign/dto/rep/SignatureItemRep.java b/signature/src/main/java/com/gkhy/sign/dto/rep/SignatureItemRep.java
index 03acbc2..5111aa6 100644
--- a/signature/src/main/java/com/gkhy/sign/dto/rep/SignatureItemRep.java
+++ b/signature/src/main/java/com/gkhy/sign/dto/rep/SignatureItemRep.java
@@ -2,16 +2,19 @@
 
 import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableId;
+import com.fasterxml.jackson.annotation.JsonFormat;
 import com.gkhy.sign.entity.SignatureFlow;
 import com.ruoyi.common.core.domain.BaseEntity;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
 
 import javax.validation.constraints.NotNull;
+import java.io.Serializable;
 import java.util.Date;
 import java.util.List;
 
-public class SignatureItemRep extends BaseEntity {
+public class SignatureItemRep implements Serializable {
 
     private  Long id ;
     private String itemName;
@@ -19,6 +22,8 @@
     private String templateName;
     private Integer deptId;
     private String deptName;
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     private Date originateTime;
     private Integer initiaiUserId;
     private String initiaiUserName;
diff --git a/signature/src/main/java/com/gkhy/sign/dto/rep/SignatureTemplateRep.java b/signature/src/main/java/com/gkhy/sign/dto/rep/SignatureTemplateRep.java
index 53bd9bf..7fe794b 100644
--- a/signature/src/main/java/com/gkhy/sign/dto/rep/SignatureTemplateRep.java
+++ b/signature/src/main/java/com/gkhy/sign/dto/rep/SignatureTemplateRep.java
@@ -17,6 +17,7 @@
     private String deptName;
 
     private String filePath;
+    private String fileName;
     private Integer delFlag;
 
     public Long getId() {
@@ -75,6 +76,14 @@
         this.filePath = filePath;
     }
 
+    public String getFileName() {
+        return fileName;
+    }
+
+    public void setFileName(String fileName) {
+        this.fileName = fileName;
+    }
+
     public Integer getDelFlag() {
         return delFlag;
     }
diff --git a/signature/src/main/java/com/gkhy/sign/dto/req/SignatureFlowAddReq.java b/signature/src/main/java/com/gkhy/sign/dto/req/SignatureFlowAddReq.java
new file mode 100644
index 0000000..ed3d508
--- /dev/null
+++ b/signature/src/main/java/com/gkhy/sign/dto/req/SignatureFlowAddReq.java
@@ -0,0 +1,132 @@
+package com.gkhy.sign.dto.req;
+
+public class SignatureFlowAddReq {
+
+
+    private Long itemId;
+
+    private Long userId;
+
+    private String userName;
+
+    private Long deptId;
+    private String deptName;
+
+    private Long[] signUserId;
+
+    private String signUserName;
+
+    private Long signDeptId;
+
+    private String signDeptName;
+
+    private String filePath;
+    private Integer status;
+    private Integer sort;
+    private Integer delFlag;
+
+
+    public Long getItemId() {
+        return itemId;
+    }
+
+    public void setItemId(Long itemId) {
+        this.itemId = itemId;
+    }
+
+    public Long getUserId() {
+        return userId;
+    }
+
+    public void setUserId(Long userId) {
+        this.userId = userId;
+    }
+
+    public String getUserName() {
+        return userName;
+    }
+
+    public void setUserName(String userName) {
+        this.userName = userName;
+    }
+
+    public Long getDeptId() {
+        return deptId;
+    }
+
+    public void setDeptId(Long deptId) {
+        this.deptId = deptId;
+    }
+
+    public String getDeptName() {
+        return deptName;
+    }
+
+    public void setDeptName(String deptName) {
+        this.deptName = deptName;
+    }
+
+    public Long[] getSignUserId() {
+        return signUserId;
+    }
+
+    public void setSignUserId(Long[] signUserId) {
+        this.signUserId = signUserId;
+    }
+
+    public String getSignUserName() {
+        return signUserName;
+    }
+
+    public void setSignUserName(String signUserName) {
+        this.signUserName = signUserName;
+    }
+
+    public Long getSignDeptId() {
+        return signDeptId;
+    }
+
+    public void setSignDeptId(Long signDeptId) {
+        this.signDeptId = signDeptId;
+    }
+
+    public String getSignDeptName() {
+        return signDeptName;
+    }
+
+    public void setSignDeptName(String signDeptName) {
+        this.signDeptName = signDeptName;
+    }
+
+    public String getFilePath() {
+        return filePath;
+    }
+
+    public void setFilePath(String filePath) {
+        this.filePath = filePath;
+    }
+
+    public Integer getStatus() {
+        return status;
+    }
+
+    public void setStatus(Integer status) {
+        this.status = status;
+    }
+
+    public Integer getSort() {
+        return sort;
+    }
+
+    public void setSort(Integer sort) {
+        this.sort = sort;
+    }
+
+    public Integer getDelFlag() {
+        return delFlag;
+    }
+
+    public void setDelFlag(Integer delFlag) {
+        this.delFlag = delFlag;
+    }
+}
diff --git a/signature/src/main/java/com/gkhy/sign/dto/req/SignatureFlowSignReq.java b/signature/src/main/java/com/gkhy/sign/dto/req/SignatureFlowSignReq.java
new file mode 100644
index 0000000..6b2fa84
--- /dev/null
+++ b/signature/src/main/java/com/gkhy/sign/dto/req/SignatureFlowSignReq.java
@@ -0,0 +1,43 @@
+package com.gkhy.sign.dto.req;
+
+public class SignatureFlowSignReq {
+
+    private Integer itemId;
+    private Long userId;
+
+    private String filePath;
+
+    private Integer status;
+
+    public Integer getItemId() {
+        return itemId;
+    }
+
+    public void setItemId(Integer itemId) {
+        this.itemId = itemId;
+    }
+
+    public Long getUserId() {
+        return userId;
+    }
+
+    public void setUserId(Long userId) {
+        this.userId = userId;
+    }
+
+    public String getFilePath() {
+        return filePath;
+    }
+
+    public void setFilePath(String filePath) {
+        this.filePath = filePath;
+    }
+
+    public Integer getStatus() {
+        return status;
+    }
+
+    public void setStatus(Integer status) {
+        this.status = status;
+    }
+}
diff --git a/signature/src/main/java/com/gkhy/sign/entity/SignatureFlow.java b/signature/src/main/java/com/gkhy/sign/entity/SignatureFlow.java
index 18ada8c..b47e655 100644
--- a/signature/src/main/java/com/gkhy/sign/entity/SignatureFlow.java
+++ b/signature/src/main/java/com/gkhy/sign/entity/SignatureFlow.java
@@ -17,32 +17,30 @@
     private Integer id;
     @NotNull(message = "项目id不能为空")
     @ApiModelProperty(value = "项目id")
-    private Integer itemId;
+    private Long itemId;
     @NotNull(message = "操作人id不能为空")
     @ApiModelProperty(value = "操作人id")
     private Long userId;
-    @NotNull(message = "操作人姓名不能为空")
     @ApiModelProperty(value = "操作人姓名")
     private String userName;
     @NotNull(message = "操作人部门不能为空")
     @ApiModelProperty(value = "操作人部门")
     private Long deptId;
-    @ApiModelProperty(value = "操作人部门")
     private String deptName;
     @NotNull(message = "流向人id不能为空")
     @ApiModelProperty(value = "流向人id")
     private Long signUserId;
-    @NotNull(message = "流向人姓名不能为空")
     @ApiModelProperty(value = "流向人姓名")
     private String signUserName;
     @NotNull(message = "流向人部门不能为空")
     @ApiModelProperty(value = "流向人部门")
     private Long signDeptId;
-    @ApiModelProperty(value = "流向人部门名称")
+
     private String signDeptName;
 
-    private String file_path;
+    private String filePath;
     private Integer status;
+    private Integer sort;
     private Integer delFlag;
 
     public Integer getId() {
@@ -53,11 +51,11 @@
         this.id = id;
     }
 
-    public Integer getItemId() {
+    public Long getItemId() {
         return itemId;
     }
 
-    public void setItemId(Integer itemId) {
+    public void setItemId(Long itemId) {
         this.itemId = itemId;
     }
 
@@ -133,12 +131,21 @@
         this.deptName = deptName;
     }
 
-    public String getFile_path() {
-        return file_path;
+    public String getFilePath() {
+        return filePath;
     }
 
-    public void setFile_path(String file_path) {
-        this.file_path = file_path;
+    public void setFilePath(String file_path) {
+        this.filePath = filePath;
+    }
+
+
+    public Integer getSort() {
+        return sort;
+    }
+
+    public void setSort(Integer sort) {
+        this.sort = sort;
     }
 
     public Integer getStatus() {
diff --git a/signature/src/main/java/com/gkhy/sign/entity/SignatureTemplate.java b/signature/src/main/java/com/gkhy/sign/entity/SignatureTemplate.java
index d4e5f13..173216f 100644
--- a/signature/src/main/java/com/gkhy/sign/entity/SignatureTemplate.java
+++ b/signature/src/main/java/com/gkhy/sign/entity/SignatureTemplate.java
@@ -14,6 +14,7 @@
 @ApiModel(value = "签署模版对象" , description = "签署模版对象")
 public class SignatureTemplate extends BaseEntity {
 
+    private static final long serialVersionUID = 1L;
     @TableId(type = IdType.AUTO)
     private Long id;
 
diff --git a/signature/src/main/java/com/gkhy/sign/entity/SignatureType.java b/signature/src/main/java/com/gkhy/sign/entity/SignatureType.java
index 99b82ae..430bfc2 100644
--- a/signature/src/main/java/com/gkhy/sign/entity/SignatureType.java
+++ b/signature/src/main/java/com/gkhy/sign/entity/SignatureType.java
@@ -7,6 +7,7 @@
 import com.ruoyi.common.core.domain.BaseEntity;
 import io.swagger.annotations.ApiModel;
 
+import javax.validation.constraints.NotBlank;
 import javax.validation.constraints.NotNull;
 
 
@@ -14,11 +15,12 @@
 @ApiModel(value = "签署类型",description = "签署类型对象")
 public class SignatureType extends BaseEntity {
 
+    private static final long serialVersionUID = 1L;
 
     @TableId(value = "id", type = IdType.AUTO)
     private Long id;
 
-    @NotNull(message = "类型名成不能为空")
+    @NotBlank(message = "类型名成不能为空")
     private String typeName;
 
     private Integer delFlag;
diff --git a/signature/src/main/java/com/gkhy/sign/mapper/SignatureFlowMapper.java b/signature/src/main/java/com/gkhy/sign/mapper/SignatureFlowMapper.java
index f65b7cc..33fe482 100644
--- a/signature/src/main/java/com/gkhy/sign/mapper/SignatureFlowMapper.java
+++ b/signature/src/main/java/com/gkhy/sign/mapper/SignatureFlowMapper.java
@@ -2,10 +2,18 @@
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.gkhy.sign.dto.rep.SignatureFlowRep;
+import com.gkhy.sign.dto.req.SignatureFlowSignReq;
 import com.gkhy.sign.entity.SignatureFlow;
 
 import java.util.List;
 
 public interface SignatureFlowMapper extends BaseMapper<SignatureFlow> {
     List<SignatureFlowRep> selectbyItemId(Long id);
+
+    int updateByFlowItemId(SignatureFlowSignReq signatureFlowReq);
+
+    SignatureFlow selectByItemIdAndUserId(SignatureFlow signatureFlow);
+
+    int updateByFlow(SignatureFlow signatureFlow);
+
 }
diff --git a/signature/src/main/java/com/gkhy/sign/mapper/SignatureItemMapper.java b/signature/src/main/java/com/gkhy/sign/mapper/SignatureItemMapper.java
index 5d8b5e0..6c9fc6a 100644
--- a/signature/src/main/java/com/gkhy/sign/mapper/SignatureItemMapper.java
+++ b/signature/src/main/java/com/gkhy/sign/mapper/SignatureItemMapper.java
@@ -10,7 +10,10 @@
 public interface SignatureItemMapper extends BaseMapper<SignatureItem> {
     List<SignatureItemRep> getItemList(SignatureItemReq signatureItem);
 
-    int deleteItemByIds(Long[] ids);
+    int deleteItemByIds(Integer ids);
 
     int insertSignatureItem(SignatureItem signatureItem);
+
+    void updateByItemId(SignatureItem signatureItem);
+
 }
diff --git a/signature/src/main/java/com/gkhy/sign/mapper/SignatureTemplateMapper.java b/signature/src/main/java/com/gkhy/sign/mapper/SignatureTemplateMapper.java
index 575c502..d89f10b 100644
--- a/signature/src/main/java/com/gkhy/sign/mapper/SignatureTemplateMapper.java
+++ b/signature/src/main/java/com/gkhy/sign/mapper/SignatureTemplateMapper.java
@@ -1,12 +1,13 @@
 package com.gkhy.sign.mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.gkhy.sign.dto.rep.SignatureTemplateRep;
 import com.gkhy.sign.entity.SignatureTemplate;
 
 import java.util.List;
 
 public interface SignatureTemplateMapper extends BaseMapper<SignatureTemplate> {
-    List<SignatureTemplate> selectTemplateList(SignatureTemplate signatureTemplate);
+    List<SignatureTemplateRep> selectTemplateList(SignatureTemplate signatureTemplate);
 
-    int deleteTemplateByIds(Long[] ids);
+    int deleteTemplateByIds(Long ids);
 }
diff --git a/signature/src/main/java/com/gkhy/sign/mapper/SignatureTypeMapper.java b/signature/src/main/java/com/gkhy/sign/mapper/SignatureTypeMapper.java
index 33edefe..6a42fb5 100644
--- a/signature/src/main/java/com/gkhy/sign/mapper/SignatureTypeMapper.java
+++ b/signature/src/main/java/com/gkhy/sign/mapper/SignatureTypeMapper.java
@@ -2,11 +2,14 @@
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.gkhy.sign.entity.SignatureType;
+import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
 
 public interface SignatureTypeMapper extends BaseMapper<SignatureType> {
     List<SignatureType> selectTypeList(SignatureType signatureType);
 
-    int deleteTypeIds(Long[] ids);
+    int deleteTypeIds(Integer ids);
+
+    SignatureType selectByTypeName( String typeName);
 }
diff --git a/signature/src/main/java/com/gkhy/sign/service/SignatureFlowService.java b/signature/src/main/java/com/gkhy/sign/service/SignatureFlowService.java
index 8c67d5c..dbdc6b0 100644
--- a/signature/src/main/java/com/gkhy/sign/service/SignatureFlowService.java
+++ b/signature/src/main/java/com/gkhy/sign/service/SignatureFlowService.java
@@ -2,6 +2,8 @@
 
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.gkhy.sign.dto.rep.SignatureFlowRep;
+import com.gkhy.sign.dto.req.SignatureFlowAddReq;
+import com.gkhy.sign.dto.req.SignatureFlowSignReq;
 import com.gkhy.sign.entity.SignatureFlow;
 
 import java.util.List;
@@ -11,5 +13,8 @@
 
     int insertSignatureFlow(SignatureFlow signatureFlow);
 
+    int saveSignatureFlow(SignatureFlowSignReq signatureFlowReq);
+
+    int returnFile(SignatureFlow signatureFlow);
 
 }
diff --git a/signature/src/main/java/com/gkhy/sign/service/SignatureItemService.java b/signature/src/main/java/com/gkhy/sign/service/SignatureItemService.java
index 77b6a6c..9e0237c 100644
--- a/signature/src/main/java/com/gkhy/sign/service/SignatureItemService.java
+++ b/signature/src/main/java/com/gkhy/sign/service/SignatureItemService.java
@@ -14,5 +14,5 @@
 
     int updateSignatureIteme(SignatureItem signatureItem);
 
-    int deleteItem(Long[] ids);
+    int deleteItem(Integer ids);
 }
diff --git a/signature/src/main/java/com/gkhy/sign/service/SignatureTemplateService.java b/signature/src/main/java/com/gkhy/sign/service/SignatureTemplateService.java
index f3b3f88..a77a922 100644
--- a/signature/src/main/java/com/gkhy/sign/service/SignatureTemplateService.java
+++ b/signature/src/main/java/com/gkhy/sign/service/SignatureTemplateService.java
@@ -1,16 +1,17 @@
 package com.gkhy.sign.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.gkhy.sign.dto.rep.SignatureTemplateRep;
 import com.gkhy.sign.entity.SignatureTemplate;
 
 import java.util.List;
 
 public interface SignatureTemplateService extends IService<SignatureTemplate> {
-    List<SignatureTemplate> selectTemplate(SignatureTemplate signatureTemplate);
+    List<SignatureTemplateRep> selectTemplate(SignatureTemplate signatureTemplate);
 
     int insertSignatureTemplate(SignatureTemplate signatureTemplate);
 
     int updateSignatureTemplate(SignatureTemplate signatureTemplate);
 
-    int deleteTemplate(Long[] ids);
+    int deleteTemplate(Long ids);
 }
diff --git a/signature/src/main/java/com/gkhy/sign/service/SignatureTypeService.java b/signature/src/main/java/com/gkhy/sign/service/SignatureTypeService.java
index 6220d13..71b766b 100644
--- a/signature/src/main/java/com/gkhy/sign/service/SignatureTypeService.java
+++ b/signature/src/main/java/com/gkhy/sign/service/SignatureTypeService.java
@@ -12,5 +12,5 @@
 
     int updateSignatureType(SignatureType signatureType);
 
-    int deleteType(Long[] ids);
+    int deleteType(Integer ids);
 }
diff --git a/signature/src/main/java/com/gkhy/sign/service/impl/SignatureFlowServiceImpl.java b/signature/src/main/java/com/gkhy/sign/service/impl/SignatureFlowServiceImpl.java
index 66f2180..c19e870 100644
--- a/signature/src/main/java/com/gkhy/sign/service/impl/SignatureFlowServiceImpl.java
+++ b/signature/src/main/java/com/gkhy/sign/service/impl/SignatureFlowServiceImpl.java
@@ -2,12 +2,24 @@
 
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.gkhy.sign.dto.rep.SignatureFlowRep;
+import com.gkhy.sign.dto.req.SignatureFlowAddReq;
+import com.gkhy.sign.dto.req.SignatureFlowSignReq;
 import com.gkhy.sign.entity.SignatureFlow;
+import com.gkhy.sign.entity.SignatureItem;
 import com.gkhy.sign.mapper.SignatureFlowMapper;
+import com.gkhy.sign.mapper.SignatureItemMapper;
 import com.gkhy.sign.service.SignatureFlowService;
+import com.ruoyi.common.core.domain.entity.SysDept;
+import com.ruoyi.common.core.domain.entity.SysUser;
+import com.ruoyi.common.core.domain.model.LoginUser;
+import com.ruoyi.common.utils.SecurityUtils;
+import com.ruoyi.system.mapper.SysDeptMapper;
+import com.ruoyi.system.mapper.SysUserMapper;
+import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.util.Date;
 import java.util.List;
 
 @Service
@@ -15,6 +27,12 @@
 
     @Autowired
     private SignatureFlowMapper signatureFlowMapper;
+    @Autowired
+    private SignatureItemMapper signatureItemMapper;
+    @Autowired
+    private SysUserMapper sysUserMapper;
+    @Autowired
+    private SysDeptMapper sysDeptMapper;
 
 
 
@@ -25,6 +43,56 @@
 
     @Override
     public int insertSignatureFlow(SignatureFlow signatureFlow) {
+//        SignatureFlow signatureFlow1 = signatureFlowMapper.selectByItemIdAndUserId(signatureFlow);
+//        if (signatureFlow1.getStatus() == 0 ){
+//            throw new RuntimeException("尚未签名,不能流转");
+//        }
+        List<SignatureFlowRep> signatureFlowReps = signatureFlowMapper.selectbyItemId(signatureFlow.getItemId());
+        signatureFlow.setSort(signatureFlowReps.size()+1);
+        SysUser sysUser = sysUserMapper.selectUserById(signatureFlow.getUserId());
+        SysDept sysDept = sysDeptMapper.selectDeptById(signatureFlow.getDeptId());
+        signatureFlow.setUserName(sysUser.getNickName());
+        signatureFlow.setDeptName(sysDept.getDeptName());
+        SysUser sysUserSign = sysUserMapper.selectUserById(signatureFlow.getSignUserId());
+        SysDept sysDeptSign = sysDeptMapper.selectDeptById(signatureFlow.getSignDeptId());
+        signatureFlow.setSignUserName(sysUserSign.getNickName());
+        signatureFlow.setSignDeptName(sysDeptSign.getDeptName());
+
         return signatureFlowMapper.insert(signatureFlow);
     }
+
+    @Override
+    public int saveSignatureFlow(SignatureFlowSignReq signatureFlowReq) {
+
+        return signatureFlowMapper.updateByFlowItemId(signatureFlowReq);
+    }
+
+    @Override
+    public int returnFile(SignatureFlow signatureFlow) {
+        LoginUser loginUser = SecurityUtils.getLoginUser();
+        signatureFlow.setStatus(3);
+        SysUser sysUser = sysUserMapper.selectUserById(loginUser.getUserId());
+        SysDept sysDept = sysDeptMapper.selectDeptById(loginUser.getDeptId());
+        signatureFlow.setUserId(loginUser.getUserId());
+        signatureFlow.setUserName(sysUser.getNickName());
+        signatureFlow.setDeptId(loginUser.getDeptId());
+        signatureFlow.setDeptName(sysDept.getDeptName());
+        signatureFlow.setSignDeptId(sysDept.getDeptId());
+        signatureFlow.setSignDeptName(sysDept.getDeptName());
+        signatureFlow.setSignUserId(sysUser.getUserId());
+        signatureFlow.setSignUserName(sysUser.getNickName());
+        List<SignatureFlowRep> signatureFlowReps = signatureFlowMapper.selectbyItemId(signatureFlow.getItemId());
+        signatureFlow.setSort(signatureFlowReps.size()+1);
+        int i = signatureFlowMapper.insert(signatureFlow);
+        SignatureItem signatureItem = new SignatureItem();
+        if (i>0){
+            signatureItem.setId(Long.valueOf(signatureFlow.getItemId()));
+            signatureItem.setFilePath(signatureFlow.getFilePath());
+            signatureItem.setStatus(2);
+            signatureItem.setUpdateBy(SecurityUtils.getUsername());
+            signatureItem.setUpdateTime(new Date());
+            signatureItemMapper.updateByItemId(signatureItem);
+        }
+        return i;
+    }
 }
diff --git a/signature/src/main/java/com/gkhy/sign/service/impl/SignatureItemServiceImpl.java b/signature/src/main/java/com/gkhy/sign/service/impl/SignatureItemServiceImpl.java
index 3f0e5d3..d3d14bf 100644
--- a/signature/src/main/java/com/gkhy/sign/service/impl/SignatureItemServiceImpl.java
+++ b/signature/src/main/java/com/gkhy/sign/service/impl/SignatureItemServiceImpl.java
@@ -1,6 +1,8 @@
 package com.gkhy.sign.service.impl;
 
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.github.pagehelper.PageInfo;
+import com.gkhy.sign.dto.rep.SignatureFlowRep;
 import com.gkhy.sign.dto.rep.SignatureItemRep;
 import com.gkhy.sign.dto.req.SignatureItemReq;
 import com.gkhy.sign.entity.SignatureFlow;
@@ -9,7 +11,9 @@
 import com.gkhy.sign.mapper.SignatureItemMapper;
 import com.gkhy.sign.service.SignatureItemService;
 import com.ruoyi.common.core.domain.entity.SysDept;
+import com.ruoyi.common.core.domain.entity.SysRole;
 import com.ruoyi.common.core.domain.entity.SysUser;
+import com.ruoyi.common.utils.PageUtils;
 import com.ruoyi.common.utils.SecurityUtils;
 import com.ruoyi.system.mapper.SysDeptMapper;
 import com.ruoyi.system.mapper.SysUserMapper;
@@ -35,9 +39,15 @@
 
     @Override
     public List<SignatureItemRep> selectItemList(SignatureItemReq signatureItem) {
-        SysUser user = SecurityUtils.getLoginUser().getUser();
-        signatureItem.setUserId(user.getUserId());
-        return signatureItemMapper.getItemList(signatureItem);
+        if (!SysUser.isAdmin(SecurityUtils.getUserId())) {
+            signatureItem.setUserId(SecurityUtils.getUserId());
+        }
+        List<SignatureItemRep> itemList = signatureItemMapper.getItemList(signatureItem);
+        for (SignatureItemRep signatureItemRep : itemList) {
+            List<SignatureFlowRep> signatureFlowReps = signatureFlowMapper.selectbyItemId(signatureItemRep.getId());
+            signatureItemRep.setSignatureFlows(signatureFlowReps);
+        }
+        return itemList;
     }
 
     @Override
@@ -48,20 +58,23 @@
         signatureItem.setOriginateTime(new Date());
         int insert = signatureItemMapper.insertSignatureItem(signatureItem);
 
+        List<SignatureFlowRep> signatureFlowReps = signatureFlowMapper.selectbyItemId(signatureItem.getId());
         SignatureFlow signatureFlow = new SignatureFlow();
-        signatureFlow.setItemId(insert);
+        signatureFlow.setItemId(signatureItem.getId());
         signatureFlow.setUserId(SecurityUtils.getUserId());
-        signatureFlow.setUserName(SecurityUtils.getUsername());
+        SysUser sysUser2 = sysUser.selectUserById(SecurityUtils.getUserId());
+        signatureFlow.setUserName(sysUser2.getNickName());
         signatureFlow.setDeptId(SecurityUtils.getDeptId());
         SysDept sysDept = sysDeptMapper.selectDeptById(SecurityUtils.getDeptId());
         signatureFlow.setDeptName(sysDept.getDeptName());
         signatureFlow.setSignUserId(signatureItem.getInitiaiUserId());
         SysUser sysUser1 = sysUser.selectUserById(signatureItem.getInitiaiUserId());
         SysDept sysDept1 = sysDeptMapper.selectDeptById(sysUser1.getDeptId());
-        signatureFlow.setSignUserName(sysUser1.getUserName());
+        signatureFlow.setSignUserName(sysUser1.getNickName());
         signatureFlow.setSignDeptId(sysDept1.getDeptId());
         signatureFlow.setSignDeptName(sysDept1.getDeptName());
         signatureFlow.setStatus(0);
+        signatureFlow.setSort(signatureFlowReps.size()+1);
         signatureFlowMapper.insert(signatureFlow);
 
         return insert;
@@ -76,7 +89,7 @@
     }
 
     @Override
-    public int deleteItem(Long[] ids) {
+    public int deleteItem(Integer ids) {
         return signatureItemMapper.deleteItemByIds(ids);
     }
 }
diff --git a/signature/src/main/java/com/gkhy/sign/service/impl/SignatureTemplateServiceImpl.java b/signature/src/main/java/com/gkhy/sign/service/impl/SignatureTemplateServiceImpl.java
index a875bfd..0d05433 100644
--- a/signature/src/main/java/com/gkhy/sign/service/impl/SignatureTemplateServiceImpl.java
+++ b/signature/src/main/java/com/gkhy/sign/service/impl/SignatureTemplateServiceImpl.java
@@ -1,11 +1,15 @@
 package com.gkhy.sign.service.impl;
 
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.gkhy.sign.dto.rep.SignatureTemplateRep;
 import com.gkhy.sign.entity.SignatureTemplate;
 import com.gkhy.sign.mapper.SignatureTemplateMapper;
 import com.gkhy.sign.service.SignatureTemplateService;
 import com.ruoyi.common.core.domain.entity.SysUser;
 import com.ruoyi.common.utils.SecurityUtils;
+import com.ruoyi.common.utils.file.FileUploadUtils;
+import com.ruoyi.common.utils.file.FileUtils;
+import org.apache.tomcat.util.http.fileupload.FileUpload;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
@@ -19,12 +23,17 @@
     private SignatureTemplateMapper signatureTemplateMapper;
 
     @Override
-    public List<SignatureTemplate> selectTemplate(SignatureTemplate signatureTemplate) {
+    public List<SignatureTemplateRep> selectTemplate(SignatureTemplate signatureTemplate) {
 
         if (!SysUser.isAdmin(SecurityUtils.getUserId())){
             signatureTemplate.setDeptId(SecurityUtils.getDeptId());
         }
-        return signatureTemplateMapper.selectTemplateList(signatureTemplate);
+        List<SignatureTemplateRep> signatureTemplateReps = signatureTemplateMapper.selectTemplateList(signatureTemplate);
+        for (SignatureTemplateRep signatureTemplateRep : signatureTemplateReps) {
+            String name = FileUtils.getName(signatureTemplateRep.getFilePath());
+            signatureTemplateRep.setFileName(name);
+        }
+        return signatureTemplateReps;
     }
 
     @Override
@@ -42,7 +51,7 @@
     }
 
     @Override
-    public int deleteTemplate(Long[] ids) {
+    public int deleteTemplate(Long ids) {
         return signatureTemplateMapper.deleteTemplateByIds(ids);
     }
 }
diff --git a/signature/src/main/java/com/gkhy/sign/service/impl/SignatureTypeServiceImpl.java b/signature/src/main/java/com/gkhy/sign/service/impl/SignatureTypeServiceImpl.java
index c0c0a0f..ad153aa 100644
--- a/signature/src/main/java/com/gkhy/sign/service/impl/SignatureTypeServiceImpl.java
+++ b/signature/src/main/java/com/gkhy/sign/service/impl/SignatureTypeServiceImpl.java
@@ -9,8 +9,6 @@
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
-import java.time.LocalDateTime;
-import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
 
@@ -30,6 +28,10 @@
         SysUser user = SecurityUtils.getLoginUser().getUser();
         signatureType.setCreateBy(user.getUserName());
         signatureType.setCreateTime(new Date());
+        SignatureType signatureType1 = signatureTypeMapper.selectByTypeName(signatureType.getTypeName());
+        if (signatureType1!=null){
+            throw new RuntimeException("类型名称不可重复");
+        }
         return signatureTypeMapper.insert(signatureType);
     }
 
@@ -42,7 +44,7 @@
     }
 
     @Override
-    public int deleteType(Long[] ids) {
+    public int deleteType(Integer ids) {
         return signatureTypeMapper.deleteTypeIds(ids);
     }
 }
diff --git a/signature/src/main/resources/mapper/sign/SignatureFlowMapper.xml b/signature/src/main/resources/mapper/sign/SignatureFlowMapper.xml
index c647e6b..11db864 100644
--- a/signature/src/main/resources/mapper/sign/SignatureFlowMapper.xml
+++ b/signature/src/main/resources/mapper/sign/SignatureFlowMapper.xml
@@ -3,20 +3,39 @@
         PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.gkhy.sign.mapper.SignatureFlowMapper">
+    <update id="updateByFlowItemId">
+        UPDATE signature_flow
+        SET file_path = #{filePath},
+            `status` = #{status}
+        WHERE
+            item_id = #{itemId}
+          AND sign_user_id = #{userId}
+    </update>
+
+    <update id="updateByFlow">
+        update signature_flow
+        set status=#{status} where item_id = #{itemId} and sign_user_id = #{userId}
+    </update>
 
 
     <select id="selectbyItemId" resultType="com.gkhy.sign.dto.rep.SignatureFlowRep">
-        select sf.item_id,
-               sf.user_id,
-               sf.user_name,
-               sf.dept_id,
-               sf.dept_name,
-               sf.after_user_id,
-               sf.after_user_name,
-               sf.after_dept_id,
-               sf.after_dept_name,
-               siu.status as sing_status
+        select
+            item_id,
+            user_id,
+            user_name,
+            dept_id,
+            dept_name,
+            sign_user_id,
+            sign_user_name,
+            sign_dept_id,
+            sign_dept_name,
+            file_path as sign_file,
+            status as sign_status,
+            sort
         from
             signature_flow where item_id = #{id}
     </select>
+    <select id="selectByItemIdAndUserId" resultType="com.gkhy.sign.entity.SignatureFlow">
+        select * from signature_flow where item_id = #{itemId} and sign_user_id = #{signUserId}
+    </select>
 </mapper>
\ No newline at end of file
diff --git a/signature/src/main/resources/mapper/sign/SignatureItemMapper.xml b/signature/src/main/resources/mapper/sign/SignatureItemMapper.xml
index 4523301..a2d0970 100644
--- a/signature/src/main/resources/mapper/sign/SignatureItemMapper.xml
+++ b/signature/src/main/resources/mapper/sign/SignatureItemMapper.xml
@@ -13,24 +13,26 @@
         <result property="deptName" column="item_dept_name"/>
         <result property="originateTime" column="originate_time"/>
         <result property="initiaiUserId" column="initiai_user_id"/>
-        <result property="initiaiUserName" column="initiaiUserid"/>
+        <result property="initiaiUserName" column="initiai_user_name"/>
         <result property="itemFile" column="item_file"/>
         <result property="itemStatus" column="item_status"/>
         <result property="delFlag" column="del_flag"/>
-        <collection property="signatureFlows" javaType="java.util.List" resultMap="signatureItemRep"/>
+<!--        <collection property="signatureFlows" javaType="java.util.List" resultMap="signatureItemRep"/>-->
     </resultMap>
 
     <resultMap id="signatureItemRep" type="com.gkhy.sign.dto.rep.SignatureFlowRep">
         <result property="itemId" column="item_id"/>
         <result property="userId" column="user_id"/>
-        <result property="userName" column="userName"/>
+        <result property="userName" column="user_name"/>
         <result property="deptId" column="dept_id"/>
+        <result property="deptName" column="dept_name"/>
         <result property="signUserId" column="sign_user_id"/>
         <result property="signUserName" column="sign_user_name"/>
         <result property="signDeptId" column="sign_dept_id"/>
         <result property="signDeptName" column="sign_dept_name"/>
         <result property="signFile" column="sign_file"/>
         <result property="signStatus" column="sign_status"/>
+        <result property="sort" column="sort"/>
     </resultMap>
     <insert id="insertSignatureItem" parameterType="SignatureItem" useGeneratedKeys="true" keyProperty="id">
         INSERT INTO `signature`.`signature_item`
@@ -40,7 +42,7 @@
             <if test="templateId != null">template_id,</if>
             <if test="deptId != null">dept_id,</if>
             <if test="originateTime != null">originate_time,</if>
-            <if test="initialUserId != null">initiai_user_id,</if>
+            <if test="initiaiUserId != null">initiai_user_id,</if>
             <if test="filePath != null and filePath != ''">file_path,</if>
             <if test="status != null">status,</if>
             <if test="delFlag != null">del_flag,</if>
@@ -55,7 +57,7 @@
             <if test="templateId != null">#{templateId},</if>
             <if test="deptId != null">#{deptId},</if>
             <if test="originateTime != null">#{originateTime},</if>
-            <if test="initialUserId != null">#{initialUserId},</if>
+            <if test="initiaiUserId != null">#{initiaiUserId},</if>
             <if test="filePath != null and filePath != ''">#{filePath},</if>
             <if test="status != null">#{status},</if>
             <if test="delFlag != null">#{delFlag},</if>
@@ -65,15 +67,33 @@
             <if test="updateTime != null">#{updateTime},</if>
         </trim>
     </insert>
+    <update id="updateByItemId">
+            update signature_item
+            <trim prefix="SET" suffixOverrides=",">
+                <if test="itemName != null and itemName != ''">item_name = #{itemName},</if>
+                <if test="templateId != null">template_id = #{templateId},</if>
+                <if test="deptId != null">dept_id = #{deptId},</if>
+                <if test="originateTime != null">originate_time = #{originateTime},</if>
+                <if test="initiaiUserId != null">initiai_user_id = #{initiaiUserId},</if>
+                <if test="filePath != null and filePath != ''">file_path = #{filePath},</if>
+                <if test="status != null"> status = #{status},</if>
+                <if test="delFlag != null">del_flag = #{delFlag},</if>
+                <if test="createBy != null and createBy != ''"> create_by = #{createBy},</if>
+                <if test="createTime != null">create_time = #{createTime},</if>
+                <if test="updateBy != null and updateBy != ''">update_by = #{updateBy},</if>
+                <if test="updateTime != null">update_time = #{updateTime},</if>
+            </trim>
+            where id = #{id}
+    </update>
 
     <delete id="deleteItemByIds">
-        update signature_item set del_flag = 2 where id in
-        <foreach item="id" collection="array" open="(" separator="," close=")">
-            #{id}
-        </foreach>
+        update signature_item set del_flag = 2 where id = #{ids}
     </delete>
 
-    <select id="getItemList" resultMap="signatureItemRep">
+
+
+<!--    LEFT JOIN signature_flow sf ON si.id = sf.item_id-->
+    <select id="getItemList" resultMap="itemVo">
         SELECT
             si.id,
             si.item_name,
@@ -82,37 +102,31 @@
             si.dept_id as itme_dept_id,
             sd.dept_name as item_dept_name,
             si.originate_time,
-            su.user_name AS initiai_user_name,
+            su.nick_name AS initiai_user_name,
             si.initiai_user_id,
             st.file_path as item_file,
             si.`status` as item_status,
-            si.del_flag,
-            sf.item_id,
-            sf.user_id,
-            sf.user_name,
-            sf.dept_id,
-            sf.dept_name,
-            sf.sign_user_id,
-            sf.sign_user_name,
-            sf.sign_dept_id,
-            sf.sign_dept_name,
-            sf.file_path as sign_file,
-            sf.status as sign_status
+            si.del_flag
         FROM
             signature_item si
             LEFT JOIN signature_template st ON si.template_id = st.id
             LEFT JOIN signature_type sty ON st.type_id = sty.id
             LEFT JOIN sys_dept sd ON si.dept_id = sd.dept_id
             LEFT JOIN sys_user su ON si.initiai_user_id = su.user_id
-            LEFT JOIN signature_flow sf ON si.id = sf.item_id
         <where>
+            si.del_flag = 0
+            <if test="userId != null">
+                AND si.id IN (
+                SELECT DISTINCT si.id
+                FROM signature_item si
+                LEFT JOIN signature_flow sf ON si.id = sf.item_id
+                WHERE sf.sign_user_id = #{userId}
+                )
+            </if>
             <if test="status != null">
                 and si.status = #{status}
             </if>
-            <if test="userId != null">
-                and sf.user_id = #{userId}
-            </if>
         </where>
-        ORDER BY si.id
+        ORDER BY si.create_time desc
     </select>
 </mapper>
\ No newline at end of file
diff --git a/signature/src/main/resources/mapper/sign/SignatureTemplateMapper.xml b/signature/src/main/resources/mapper/sign/SignatureTemplateMapper.xml
index c3e2571..ecdd072 100644
--- a/signature/src/main/resources/mapper/sign/SignatureTemplateMapper.xml
+++ b/signature/src/main/resources/mapper/sign/SignatureTemplateMapper.xml
@@ -16,14 +16,11 @@
         <result property="delFlag" column="del_flag"/>
     </resultMap>
     <delete id="deleteTemplateByIds">
-        update signature_template set del_flag = 2 where id in
-        <foreach item="id" collection="array" open="(" separator="," close=")">
-            #{id}
-        </foreach>
+        update signature_template set del_flag = 2 where id = #{ids}
     </delete>
 
 
-    <select id="selectTemplateList" resultType="com.gkhy.sign.entity.SignatureTemplate">
+    <select id="selectTemplateList" resultType="com.gkhy.sign.dto.rep.SignatureTemplateRep">
         SELECT
             st.id,
             st.template_name,
@@ -38,9 +35,11 @@
                 LEFT JOIN sys_dept sd ON st.dept_id = sd.dept_id
                 LEFT JOIN signature_type sty on st.type_id = sty.id
         <where>
+            and st.del_flag = 0
             <if test="deptId != null">
                 and st.dept_id = #{deptId}
             </if>
         </where>
+        order by st.create_time desc
     </select>
 </mapper>
\ No newline at end of file
diff --git a/signature/src/main/resources/mapper/sign/SignatureTypeMapper.xml b/signature/src/main/resources/mapper/sign/SignatureTypeMapper.xml
index 43a22ee..94b22d4 100644
--- a/signature/src/main/resources/mapper/sign/SignatureTypeMapper.xml
+++ b/signature/src/main/resources/mapper/sign/SignatureTypeMapper.xml
@@ -18,10 +18,7 @@
     </sql>
 
     <delete id="deleteTypeIds">
-        update signature_type set del_flag = 2 where id in
-        <foreach item="id" collection="array" open="(" separator="," close=")">
-            #{id}
-        </foreach>
+        update signature_type set del_flag = 2 where id= #{ids}
     </delete>
 
 
@@ -34,4 +31,9 @@
             </if>
         </where>
     </select>
+
+    <select id="selectByTypeName" resultType="com.gkhy.sign.entity.SignatureType">
+        <include refid="selectType"/>
+        where type_name =#{typeName} and del_flag = 0
+    </select>
 </mapper>
\ No newline at end of file

--
Gitblit v1.9.2