Просмотр исходного кода

用户整改,增加发票管理东西

ligang134 3 лет назад
Родитель
Сommit
542d67a1a7
35 измененных файлов с 1762 добавлено и 344 удалено
  1. 22 0
      InsDockerFile
  2. 1 1
      src/main/java/com/ydtech/config/SwaggerConfig.java
  3. 3 1
      src/main/java/com/ydtech/core/page/PageRequest.java
  4. 7 0
      src/main/java/com/ydtech/core/page/PageResult.java
  5. 5 5
      src/main/java/com/ydtech/modules/admin/controller/SysDictController.java
  6. 129 12
      src/main/java/com/ydtech/modules/admin/controller/SysUserController.java
  7. 70 2
      src/main/java/com/ydtech/modules/admin/dao/SysUserMapper.java
  8. 106 86
      src/main/java/com/ydtech/modules/admin/model/SysUser.java
  9. 16 0
      src/main/java/com/ydtech/modules/admin/service/SysUserService.java
  10. 89 4
      src/main/java/com/ydtech/modules/admin/service/impl/SysUserServiceImpl.java
  11. 41 0
      src/main/java/com/ydtech/modules/admin/vo/SysUserBaseVO.java
  12. 33 0
      src/main/java/com/ydtech/modules/admin/vo/SysUserInternalVO.java
  13. 165 0
      src/main/java/com/ydtech/modules/admin/vo/SysUserSynthesisInfoVO.java
  14. 75 0
      src/main/java/com/ydtech/modules/fnc/controller/TaxController.java
  15. 8 0
      src/main/java/com/ydtech/modules/fnc/dao/TaxToolMapper.java
  16. 40 0
      src/main/java/com/ydtech/modules/fnc/model/TaxTool.java
  17. 26 0
      src/main/java/com/ydtech/modules/fnc/service/TaxToolService.java
  18. 77 0
      src/main/java/com/ydtech/modules/fnc/service/impl/TaxToolServiceImpl.java
  19. 44 14
      src/main/java/com/ydtech/modules/ins/controller/InsAlltrustApiController.java
  20. 3 0
      src/main/java/com/ydtech/modules/ins/model/yc/policy/response/PolicyResponse.java
  21. 2 5
      src/main/java/com/ydtech/modules/ins/service/InsAlltrustApiService.java
  22. 55 28
      src/main/java/com/ydtech/modules/ins/service/impl/InsAlltrustApiServiceImpl.java
  23. 59 0
      src/main/java/com/ydtech/modules/inv/controller/InvCompanyController.java
  24. 56 0
      src/main/java/com/ydtech/modules/inv/controller/InvInvoiceController.java
  25. 112 112
      src/main/java/com/ydtech/modules/inv/controller/InvPayableStatementController.java
  26. 69 69
      src/main/java/com/ydtech/modules/inv/controller/InvoiceController.java
  27. 9 0
      src/main/java/com/ydtech/modules/inv/dao/InvCompanyMapper.java
  28. 18 0
      src/main/java/com/ydtech/modules/inv/dao/InvInvoiceInfoMapper.java
  29. 115 0
      src/main/java/com/ydtech/modules/inv/model/InvCompany.java
  30. 192 0
      src/main/java/com/ydtech/modules/inv/model/InvInvoiceInfo.java
  31. 13 0
      src/main/java/com/ydtech/modules/inv/service/InvCompanyService.java
  32. 13 0
      src/main/java/com/ydtech/modules/inv/service/InvInvoiceInfoService.java
  33. 22 0
      src/main/java/com/ydtech/modules/inv/service/impl/InvCompanyServiceImpl.java
  34. 22 0
      src/main/java/com/ydtech/modules/inv/service/impl/InvInvoiceInfoServiceImpl.java
  35. 45 5
      src/main/java/com/ydtech/utils/DateUtil.java

+ 22 - 0
InsDockerFile

@@ -0,0 +1,22 @@
+FROM java:8u111-jre-alpine
+
+RUN mkdir -p /ins
+RUN mkdir -p /ins/lib/
+RUN mkdir -p /ins/logs/
+RUN mkdir -p /nasData
+
+#COPY /lib /ins/lib/
+#COPY *.jar  /ins/ROOT.jar
+
+ENV SERVER_PORT=8080
+
+ENV TimeZone=Asia/Shanghai
+
+RUN ln -snf /usr/share/zoneinfo/$TimeZone /etc/localtime && echo $TimeZone > /etc/timezone
+
+EXPOSE ${SERVER_PORT}
+
+RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories && apk add --update ttf-dejavu fontconfig && rm -rf /var/cache/apk/* && mkfontscale && mkfontdir && fc-cache
+
+#CMD java -Dloader.path="lib/" -jar app-pc.jar --spring.profiles.active=test
+ENTRYPOINT ["java", "-Dloader.path=/ins/lib/", "-jar","/ins/ROOT.jar", "--spring.profiles.active=prod"]

+ 1 - 1
src/main/java/com/ydtech/config/SwaggerConfig.java

@@ -146,7 +146,7 @@ public class SwaggerConfig {
                 .apis(RequestHandlerSelectors.basePackage("com.ydtech.modules.inv"))
                 .paths(PathSelectors.any())
                 .build()
-                .groupName("inv")
+                .groupName("inv(发票)")
 //                .globalOperationParameters(parameters)
                 //  安全上下文
                 .securitySchemes(securitySchemes())

+ 3 - 1
src/main/java/com/ydtech/core/page/PageRequest.java

@@ -2,6 +2,7 @@ package com.ydtech.core.page;
 
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.ydtech.modules.esm.model.EsmInsAttribution;
+import io.swagger.annotations.ApiModelProperty;
 import org.apache.poi.ss.formula.functions.T;
 
 import java.util.HashMap;
@@ -23,8 +24,9 @@ public class PageRequest {
      */
     private int pageSize = 10;
     /**
-     * 每页数量
+     * map
      */
+    @ApiModelProperty(value = "参数 Map集")
     private Map<String, ColumnFilter> columnFilters = new HashMap<String, ColumnFilter>();
 
     public int getPageNum() {

+ 7 - 0
src/main/java/com/ydtech/core/page/PageResult.java

@@ -5,6 +5,8 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.fasterxml.jackson.annotation.JsonInclude;
 import com.fasterxml.jackson.annotation.JsonProperty;
 import com.github.pagehelper.Page;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
 
 import java.util.Collection;
 import java.util.List;
@@ -15,22 +17,27 @@ import java.util.List;
  * @author Yasepix
  * @date Aug 19, 2018
  */
+@ApiModel
 public class PageResult<T> {
     /**
      * 当前页码
      */
+    @ApiModelProperty(value = "当前页码")
     private int pageNum;
     /**
      * 每页数量
      */
+    @ApiModelProperty(value = "每页数量")
     private int pageSize;
     /**
      * 记录总数
      */
+    @ApiModelProperty(value = "记录总数")
     private long totalSize;
     /**
      * 页码总数
      */
+    @ApiModelProperty(value = "页码总数")
     private int totalPages;
     /**
      * 分页数据

+ 5 - 5
src/main/java/com/ydtech/modules/admin/controller/SysDictController.java

@@ -71,7 +71,7 @@ public class SysDictController extends BaseController {
 //		return HttpResult.ok(sysDictService.save(record));
 //	}
 
-    @PreAuthorize("hasAuthority('sys:dict:add')")
+//    @PreAuthorize("hasAuthority('sys:dict:add')")
     @PostMapping(value = "/add")
     public HttpResult add(@RequestBody SysDict record) {
 //		return HttpResult.ok(sysDictService.save(record));
@@ -80,7 +80,7 @@ public class SysDictController extends BaseController {
         return HttpResult.ok(result);
     }
 
-    @PreAuthorize("hasAuthority('sys:dict:edit')")
+//    @PreAuthorize("hasAuthority('sys:dict:edit')")
     @PostMapping(value = "/edit")
     public HttpResult edit(@RequestBody SysDict record) {
 //		return HttpResult.ok(sysDictService.save(record));
@@ -89,20 +89,20 @@ public class SysDictController extends BaseController {
         return HttpResult.ok(result);
     }
 
-    @PreAuthorize("hasAuthority('sys:dict:add') AND hasAuthority('sys:dict:edit')")
+//    @PreAuthorize("hasAuthority('sys:dict:add') AND hasAuthority('sys:dict:edit')")
     @PostMapping(value = "/savetype")
     public HttpResult savetype(@RequestBody SysDictType record) {
         return HttpResult.ok(sysDictTypeService.insertSelective(record));
     }
 
 
-    @PreAuthorize("hasAuthority('sys:dict:delete')")
+//    @PreAuthorize("hasAuthority('sys:dict:delete')")
     @PostMapping(value = "/delete")
     public HttpResult delete(@RequestBody List<SysDict> records) {
         return HttpResult.ok(sysDictService.delete(records));
     }
 
-    @PreAuthorize("hasAuthority('sys:dict:view')")
+//    @PreAuthorize("hasAuthority('sys:dict:view')")
     @PostMapping(value = "/findPage")
     public HttpResult findPage(@RequestBody PageRequest pageRequest) {
         return HttpResult.ok(sysDictService.findPage(pageRequest));

+ 129 - 12
src/main/java/com/ydtech/modules/admin/controller/SysUserController.java

@@ -2,6 +2,7 @@ package com.ydtech.modules.admin.controller;
 
 
 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.extension.plugins.pagination.Page;
 import com.ydtech.constants.SysConstants;
@@ -14,10 +15,15 @@ import com.ydtech.modules.admin.model.SysUser;
 import com.ydtech.modules.admin.model.SysUserRole;
 import com.ydtech.modules.admin.service.SysUserRoleService;
 import com.ydtech.modules.admin.service.SysUserService;
+import com.ydtech.modules.admin.vo.SysUserBaseVO;
+import com.ydtech.modules.admin.vo.SysUserInternalVO;
 import com.ydtech.modules.admin.vo.SysUserVO;
 import com.ydtech.modules.esm.model.EsmInsCompany;
 import com.ydtech.security.utils.PasswordUtils;
+import com.ydtech.utils.DateUtil;
 import com.ydtech.utils.StringUtils;
+import com.ydtech.utils.idgen.IdGenerate;
+import io.swagger.annotations.*;
 import org.apache.commons.codec.language.bm.Lang;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.access.prepost.PreAuthorize;
@@ -35,6 +41,7 @@ import java.util.List;
  * @date Oct 29, 2018
  */
 @RestController
+@Api(tags = "用户控制器")
 @RequestMapping("user")
 public class SysUserController extends BaseController {
 
@@ -94,7 +101,8 @@ public class SysUserController extends BaseController {
 //	}
 
 
-    @PreAuthorize("hasAuthority('sys:user:delete')")
+    //    @PreAuthorize("hasAuthority('sys:user:delete')")
+    @ApiOperation(value = "逻辑删除")
     @PostMapping(value = "/deleteFlag")
     public HttpResult deleteFlag(@RequestBody List<SysUser> records) {
         for (SysUser record : records) {
@@ -120,7 +128,7 @@ public class SysUserController extends BaseController {
         return HttpResult.ok(sysUserService.findPermissions(sysUser));
     }
 
-    @PreAuthorize("hasAuthority('sys:user:view')")
+    //    @PreAuthorize("hasAuthority('sys:user:view')")
     @GetMapping(value = "/findUserRoles")
     public HttpResult findUserRoles(@RequestParam Long userId) {
         return HttpResult.ok(sysUserService.findUserRoles(userId));
@@ -144,33 +152,32 @@ public class SysUserController extends BaseController {
         ArrayList array = new ArrayList();
         LambdaQueryWrapper<SysUser> lqw = new LambdaQueryWrapper();
         if (!StringUtils.isEmpty(deptid) && !StringUtils.isEmpty(containsSubDept) && "1".equals(containsSubDept)) {
-            lqw.likeRight(SysUser::getDeptId,deptid);
+            lqw.likeRight(SysUser::getDeptId, deptid);
 //            whereStr.append(" and dept_id like ?");
 //            array.add(deptid + "%");
         } else if (!StringUtils.isEmpty(deptid)) {
-            lqw.eq(SysUser::getDeptId,deptid);
+            lqw.eq(SysUser::getDeptId, deptid);
 //            whereStr.append(" and dept_id = ?");
 //            array.add(deptid);
         }
         if (!StringUtils.isEmpty(name)) {
-            lqw.eq(SysUser::getName,name);
+            lqw.eq(SysUser::getName, name);
 //            whereStr.append(" and name = ?");
 //            array.add(name);
         }
         if (!StringUtils.isEmpty(mobile)) {
-            lqw.eq(SysUser::getMobile,mobile);
+            lqw.eq(SysUser::getMobile, mobile);
 //            whereStr.append(" and mobile = ?");
 //            array.add(mobile);
         }
 
         Page p = PageRequest.buildPageRequest(pageRequest);
-        IPage<SysUser> pResult = sysUserService.page(p,lqw);
+        IPage<SysUser> pResult = sysUserService.page(p, lqw);
         //传入查询条件
         PageResult pageResult = PageResult.buildPageResult(pResult);
         return HttpResult.ok(pageResult);
 
 
-
     }
 //    @PostMapping(value = "/queryPage")
 //    public HttpResult queryPage(@RequestBody PageRequest pageRequest) {
@@ -222,6 +229,7 @@ public class SysUserController extends BaseController {
             userRole.setLastUpdateTime(new Date());
             sysUserRoleService.updateById(userRole);
         } else {
+            userRole = new SysUserRole();
             userRole.setUserId(userId);
             userRole.setRoleId(Long.parseLong(roleId));
             userRole.setCreateBy(getUserName());
@@ -231,9 +239,91 @@ public class SysUserController extends BaseController {
         return HttpResult.ok();
     }
 
-    @PreAuthorize("hasAuthority('sys:user:view')")
+    //    @PreAuthorize("hasAuthority('sys:user:view')")
+    @ApiOperation(value = "用户查询分页", notes = "查询参数:\n" +
+            "userId 工号 字符串 |" +
+            "realName 姓名 字符串 |" +
+            "mobile 手机号 字符串 |" +
+            "approvalStatus 审核状态 字符串 |" +
+            "usertype 用户类型 字符串 |" +
+            "delFlag 是否删除  -1:已删除  0:正常 |" +
+            "")
     @PostMapping(value = "/findPage")
-    public HttpResult findPage(@RequestBody PageRequest pageRequest) {
+    public HttpResult<PageResult<SysUserBaseVO>> findPage(@RequestBody PageRequest pageRequest) {
+
+
+        return HttpResult.ok(sysUserService.gainUserPage(pageRequest));
+
+    }
+
+
+    @ApiOperation(value = "保存更新用户Internal")
+    @PostMapping(value = "/saveEditUserInternal")
+    public HttpResult saveEditUserInternal(@RequestBody SysUserInternalVO vo) {
+
+
+        SysUser sysUser = vo.getSysUser();
+
+        if (StringUtils.isNullOrEmpty(sysUser.getMobile())) return HttpResult.error("手机不能为空");
+        if (StringUtils.isNullOrEmpty(sysUser.getDeptId())) return HttpResult.error("机构ID不能为空");
+
+//        LambdaQueryWrapper<SysUser> lqw = new LambdaQueryWrapper<>();
+//        lqw.or().eq(StringUtils.isNotEmpty(sysUser.getDeptId()), SysUser::getDeptId, sysUser.getDeptId());
+//        ;
+
+        //处理密码
+        if (StringUtils.isNotEmpty(sysUser.getPassword())) {
+            String salt = PasswordUtils.getSalt();
+            String pwd = PasswordUtils.encode(sysUser.getPassword(), salt);
+            sysUser.setPassword(pwd);
+            sysUser.setSalt(salt);
+        }
+
+        if (StringUtils.isNullOrEmpty(vo.getSysUser().getId())) {
+            //新增
+
+
+            sysUser.setId(sysUserService.gainNextUserId(sysUser.getDeptId()));
+            sysUser.setDelFlag(0);
+            sysUser.setMobile(sysUser.getMobile());
+            sysUser.setStatus(1);
+            sysUser.setApprovalStatus(0);
+            sysUser.setCreateBy(getUserName());
+            sysUser.setCreateTime(new Date());
+            sysUserService.save(sysUser);
+
+
+        } else {
+            //更新
+            sysUserService.updateById(sysUser);
+            sysUser.setLastUpdateBy(getUserName());
+            sysUser.setLastUpdateTime(new Date());
+
+        }
+        return HttpResult.ok(sysUser);
+
+
+    }
+
+    @ApiOperation(value = "获取用户综合信息")
+    @PostMapping(value = "/gainUserSynthesisInfo/{userId}")
+    public HttpResult gainUserSynthesisInfo(@PathVariable String userId) {
+
+        return HttpResult.ok(sysUserService.gainUserSynthesisInfo(userId));
+
+
+    }
+
+    /**
+     * Used
+     *
+     * @author: lig
+     * @date: 2023年05月10日 0010
+     */
+//    @PreAuthorize("hasAuthority('sys:user:view')")
+    @PostMapping(value = "/findPageUsed")
+    @Deprecated
+    public HttpResult findPageUsed(@RequestBody PageRequest pageRequest) {
         //return HttpResult.ok(sysUserService.findPage(pageRequest));
 
         int pageNum = pageRequest.getPageNum();
@@ -288,8 +378,8 @@ public class SysUserController extends BaseController {
         }
 
         LambdaQueryWrapper<SysUser> lqw = new LambdaQueryWrapper<>();
-        lqw.ne(SysUser::getId,id);
-        lqw.eq(SysUser::getMobile,mobile);
+        lqw.ne(SysUser::getId, id);
+        lqw.eq(SysUser::getMobile, mobile);
 
         List<SysUser> users = sysUserService.list(lqw);
 //        List<SysUser> users = sysUserService.selectList(" where id != ? and mobile=?", new Object[]{id, mobile});
@@ -332,4 +422,31 @@ public class SysUserController extends BaseController {
         return HttpResult.ok(sysUserService.gainUserInternalByDeptId(deptId));
 //        return HttpResult.ok(sysUserService.selectByDeptId(deptId));
     }
+
+
+
+    /**
+     * 审批
+     *
+     * @param userId
+     * @param status 审批
+     * @return
+     */
+    @ApiOperation(value = "审批")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "userId", value = "用户ID")
+            , @ApiImplicitParam(name = "status", value = "审批状态")
+    })
+    @GetMapping(value = "/approval")
+    public HttpResult approval(@RequestParam String userId,@RequestParam String status) {
+
+        LambdaUpdateWrapper<SysUser> luw = new LambdaUpdateWrapper();
+        luw.eq(SysUser::getId,userId);
+        luw.set(SysUser::getApprovalStatus,status);
+
+        return HttpResult.ok(sysUserService.update(luw));
+
+    }
+
+
 }

+ 70 - 2
src/main/java/com/ydtech/modules/admin/dao/SysUserMapper.java

@@ -1,8 +1,11 @@
 package com.ydtech.modules.admin.dao;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ydtech.core.page.PageRequest;
+import com.ydtech.core.page.PageResult;
 import com.ydtech.modules.admin.model.SysMenu;
 import com.ydtech.modules.admin.model.SysUser;
+import com.ydtech.modules.admin.vo.SysUserBaseVO;
 import com.ydtech.modules.admin.vo.SysUserVO;
 import org.apache.ibatis.annotations.Param;
 import org.apache.ibatis.annotations.Select;
@@ -24,13 +27,62 @@ public interface SysUserMapper extends BaseMapper<SysUser> {
             "from sys_user t left join sys_dept t2 on t.dept_id=t2.id " +
             "left join sys_dept t3 on t2.parent_id=t3.id " +
             "left join esm_user_internal a on t.id=a.id " +
-            "where t.id='${userId}'";
+            "where t.id=#{userId}";
 
     String internalUserByDeptIdSql = "select t1.id,t1.name,t1.dept_id deptid,sd.name deptname,sd2.id comid,sd2.name comname,t2.status " +
             "from sys_user t1 left join esm_user_internal t2 on t1.id=t2.id " +
             "LEFT JOIN sys_dept sd ON t1.dept_id=sd.id " +
             "LEFT JOIN sys_dept sd2 ON sd2.id=sd.parent_id " +
-            "where 1=1  and t2.isteamleader = '1' and t1.dept_id='${deptId}'";
+            "where 1=1  and t2.isteamleader = '1' and t1.dept_id=#{deptId}";
+
+
+    String selectUserParamSql = "select su.id as userId,su.name,su.sex,su.mobile,su.status\n" +
+            ",sd.id as deptId,sd.name as deptName\n" +
+            ",psd.id as pDeptId,psd.name as pDeptName\n" +
+            ",dict.label as jobName\n" +
+            ",dict2.label as approvalStatus";
+
+
+    String selectUserFromSql = " from sys_user su \n" +
+            "left JOIN sys_dept sd on su.dept_id=sd.id\n" +
+            "left join sys_dept psd on sd.parent_id=psd.id\n" +
+            "left join sys_dict dict on dict.value=su.job_code\n" +
+            "left join sys_dict dict2 on dict2.value=su.approval_status\n" +
+            "where 1=1\n" +
+            "and sd.id &lt;&gt; '' \n" +
+            "AND dict.itemname = 'jobcode'\n" +
+            "AND dict2.itemname = 'approval'";
+
+    String selectUserFromWhereSql = " " +
+            "<if test='page.columnFilters.usertype !=null and page.columnFilters.usertype.value!=\"\" and page.columnFilters.usertype.value!=null '>" +
+            "  and su.usertype = #{page.columnFilters.usertype.value}" +
+            "</if> " +
+            "<if test='page.columnFilters.approvalStatus !=null and page.columnFilters.approvalStatus.value!=\"\" and page.columnFilters.approvalStatus.value!=null '>" +
+            " and su.approval_status = #{page.columnFilters.approvalStatus.value}" +
+            "</if> " +
+            "<if test='page.columnFilters.realName !=null and page.columnFilters.realName.value!=\"\" and page.columnFilters.realName.value!=null '> " +
+            " and su.name like concat('%',#{page.columnFilters.realName.value},'%')" +
+            "</if> " +
+            "<if test='page.columnFilters.userId !=null and page.columnFilters.userId.value!=\"\" and page.columnFilters.userId.value!=null '>" +
+            " and su.id = #{page.columnFilters.userId.value}" +
+            "</if> " +
+            "<if test='page.columnFilters.mobile !=null and page.columnFilters.mobile.value!=\"\" and page.columnFilters.mobile.value!=null '>" +
+            " and su.mobile = #{page.columnFilters.mobile.value}" +
+            "</if> " +
+            "<if test='page.columnFilters.delFlag !=null and page.columnFilters.delFlag.value!=\"\" and page.columnFilters.delFlag.value!=null '>" +
+            " and su.del_flag = #{page.columnFilters.delFlag.value}" +
+            "</if> " +
+            "";
+
+
+//    String selectUserFromWhereSql = " " +
+//            " and su.usertype = #{page.columnFilters.usertype.value}" +
+//            " and su.status = #{page.columnFilters.status.value}" +
+//            " and su.name like concat('%',#{page.columnFilters.name.value},'%')" +
+//            " and su.id = #{page.columnFilters.userId.value}" +
+//            " and su.mobile = #{page.columnFilters.mobile.value}" +
+//            "";
+
 
     @Select(internalUserSql)
     SysUserVO gainInternalUser(@Param("userId") String userId);
@@ -39,6 +91,22 @@ public interface SysUserMapper extends BaseMapper<SysUser> {
     @Select(internalUserByDeptIdSql)
     SysUserVO gainInternalUserByDeptId(@Param("deptId") String deptId);
 
+
+    //    @Select("select * from (" + selectUserParamSql + selectUserFromSql + selectUserFromWhereSql + " limit #{page.pageNum},#{page.pageSize} ) aaa")
+    @Select({"<script>",
+            "select * from (",
+            selectUserParamSql,
+            selectUserFromSql,
+            selectUserFromWhereSql,
+            " limit #{page.pageNum},#{page.pageSize} ) aaa",
+            "</script>"})
+    List<SysUserBaseVO> gainUserBaseInfo(@Param("page") PageRequest pageRequest);
+
+
+    //    @Select("select count(1) " + selectUserFromSql + selectUserFromWhereSql)
+    @Select({"<script>","select count(1) ",selectUserFromSql,selectUserFromWhereSql,"</script>"})
+    int gainUserBaseInfoCount(@Param("page") PageRequest pageRequest);
+
 }
 
 

+ 106 - 86
src/main/java/com/ydtech/modules/admin/model/SysUser.java

@@ -9,6 +9,8 @@ import com.baomidou.mybatisplus.annotation.TableName;
 import java.io.Serializable;
 import java.util.Date;
 
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
 import lombok.Builder;
 import lombok.Data;
 
@@ -19,22 +21,26 @@ import lombok.Data;
  */
 @TableName(value = "sys_user")
 @Data
+@ApiModel
 public class SysUser implements Serializable {
     /**
      * 编号
      */
+    @ApiModelProperty(value = "用户ID")
     @TableId(value = "id")
     private String id;
 
     /**
      * 用户名
      */
+    @ApiModelProperty(value = "用户名")
     @TableField(value = "name")
     private String name;
 
     /**
      * 密码
      */
+    @ApiModelProperty(value = "密码")
     @TableField(value = "password")
     private String password;
 
@@ -47,24 +53,28 @@ public class SysUser implements Serializable {
     /**
      * 邮箱
      */
+    @ApiModelProperty(value = "邮箱")
     @TableField(value = "email")
     private String email;
 
     /**
      * 手机号
      */
+    @ApiModelProperty(value = "手机号")
     @TableField(value = "mobile")
     private String mobile;
 
     /**
      * 状态  1:正常   0:离司 2:新注册
      */
+    @ApiModelProperty(value = "状态  1:正常   0:离司 2:新注册")
     @TableField(value = "status")
     private Integer status;
 
     /**
      * 机构ID
      */
+    @ApiModelProperty(value = "机构ID")
     @TableField(value = "dept_id")
     private String deptId;
 
@@ -95,12 +105,14 @@ public class SysUser implements Serializable {
     /**
      * 是否删除  -1:已删除  0:正常
      */
+    @ApiModelProperty(value = "是否删除  -1:已删除  0:正常")
     @TableField(value = "del_flag")
     private Integer delFlag;
 
     /**
      * 用户类型:0:系统用户 1:后线人员 2:代理人员
      */
+    @ApiModelProperty(value = "用户类型:0:系统用户 1:后线人员 2:代理人员")
     @TableField(value = "usertype")
     private String usertype;
 
@@ -119,6 +131,7 @@ public class SysUser implements Serializable {
     /**
      * 岗位
      */
+    @ApiModelProperty(value = "岗位")
     @TableField(value = "job_code")
     private String jobCode;
 
@@ -128,92 +141,99 @@ public class SysUser implements Serializable {
     @TableField(value = "openid")
     private String openid;
 
+    /**
+     * 审批状态   0 申请审核 1 审核通过 2 审核不通过 3 退回修改
+     */
+    @ApiModelProperty(value = "审批状态   0 申请审核 1 审核通过 2 审核不通过 3 退回修改")
+    @TableField(value = "approval_status")
+    private Integer approvalStatus;
+
     @TableField(exist = false)
     private static final long serialVersionUID = 1L;
 
-    @Override
-    public boolean equals(Object that) {
-        if (this == that) {
-            return true;
-        }
-        if (that == null) {
-            return false;
-        }
-        if (getClass() != that.getClass()) {
-            return false;
-        }
-        SysUser other = (SysUser) that;
-        return (this.getId() == null ? other.getId() == null : this.getId().equals(other.getId()))
-                && (this.getName() == null ? other.getName() == null : this.getName().equals(other.getName()))
-                && (this.getPassword() == null ? other.getPassword() == null : this.getPassword().equals(other.getPassword()))
-                && (this.getSalt() == null ? other.getSalt() == null : this.getSalt().equals(other.getSalt()))
-                && (this.getEmail() == null ? other.getEmail() == null : this.getEmail().equals(other.getEmail()))
-                && (this.getMobile() == null ? other.getMobile() == null : this.getMobile().equals(other.getMobile()))
-                && (this.getStatus() == null ? other.getStatus() == null : this.getStatus().equals(other.getStatus()))
-                && (this.getDeptId() == null ? other.getDeptId() == null : this.getDeptId().equals(other.getDeptId()))
-                && (this.getCreateBy() == null ? other.getCreateBy() == null : this.getCreateBy().equals(other.getCreateBy()))
-                && (this.getCreateTime() == null ? other.getCreateTime() == null : this.getCreateTime().equals(other.getCreateTime()))
-                && (this.getLastUpdateBy() == null ? other.getLastUpdateBy() == null : this.getLastUpdateBy().equals(other.getLastUpdateBy()))
-                && (this.getLastUpdateTime() == null ? other.getLastUpdateTime() == null : this.getLastUpdateTime().equals(other.getLastUpdateTime()))
-                && (this.getDelFlag() == null ? other.getDelFlag() == null : this.getDelFlag().equals(other.getDelFlag()))
-                && (this.getUsertype() == null ? other.getUsertype() == null : this.getUsertype().equals(other.getUsertype()))
-                && (this.getTenantId() == null ? other.getTenantId() == null : this.getTenantId().equals(other.getTenantId()))
-                && (this.getSex() == null ? other.getSex() == null : this.getSex().equals(other.getSex()))
-                && (this.getJobCode() == null ? other.getJobCode() == null : this.getJobCode().equals(other.getJobCode()))
-                && (this.getOpenid() == null ? other.getOpenid() == null : this.getOpenid().equals(other.getOpenid()));
-    }
-
-    @Override
-    public int hashCode() {
-        final int prime = 31;
-        int result = 1;
-        result = prime * result + ((getId() == null) ? 0 : getId().hashCode());
-        result = prime * result + ((getName() == null) ? 0 : getName().hashCode());
-        result = prime * result + ((getPassword() == null) ? 0 : getPassword().hashCode());
-        result = prime * result + ((getSalt() == null) ? 0 : getSalt().hashCode());
-        result = prime * result + ((getEmail() == null) ? 0 : getEmail().hashCode());
-        result = prime * result + ((getMobile() == null) ? 0 : getMobile().hashCode());
-        result = prime * result + ((getStatus() == null) ? 0 : getStatus().hashCode());
-        result = prime * result + ((getDeptId() == null) ? 0 : getDeptId().hashCode());
-        result = prime * result + ((getCreateBy() == null) ? 0 : getCreateBy().hashCode());
-        result = prime * result + ((getCreateTime() == null) ? 0 : getCreateTime().hashCode());
-        result = prime * result + ((getLastUpdateBy() == null) ? 0 : getLastUpdateBy().hashCode());
-        result = prime * result + ((getLastUpdateTime() == null) ? 0 : getLastUpdateTime().hashCode());
-        result = prime * result + ((getDelFlag() == null) ? 0 : getDelFlag().hashCode());
-        result = prime * result + ((getUsertype() == null) ? 0 : getUsertype().hashCode());
-        result = prime * result + ((getTenantId() == null) ? 0 : getTenantId().hashCode());
-        result = prime * result + ((getSex() == null) ? 0 : getSex().hashCode());
-        result = prime * result + ((getJobCode() == null) ? 0 : getJobCode().hashCode());
-        result = prime * result + ((getOpenid() == null) ? 0 : getOpenid().hashCode());
-        return result;
-    }
-
-    @Override
-    public String toString() {
-        StringBuilder sb = new StringBuilder();
-        sb.append(getClass().getSimpleName());
-        sb.append(" [");
-        sb.append("Hash = ").append(hashCode());
-        sb.append(", id=").append(id);
-        sb.append(", name=").append(name);
-        sb.append(", password=").append(password);
-        sb.append(", salt=").append(salt);
-        sb.append(", email=").append(email);
-        sb.append(", mobile=").append(mobile);
-        sb.append(", status=").append(status);
-        sb.append(", deptId=").append(deptId);
-        sb.append(", createBy=").append(createBy);
-        sb.append(", createTime=").append(createTime);
-        sb.append(", lastUpdateBy=").append(lastUpdateBy);
-        sb.append(", lastUpdateTime=").append(lastUpdateTime);
-        sb.append(", delFlag=").append(delFlag);
-        sb.append(", usertype=").append(usertype);
-        sb.append(", tenantId=").append(tenantId);
-        sb.append(", sex=").append(sex);
-        sb.append(", jobCode=").append(jobCode);
-        sb.append(", openid=").append(openid);
-        sb.append(", serialVersionUID=").append(serialVersionUID);
-        sb.append("]");
-        return sb.toString();
-    }
-}
+//    @Override
+//    public boolean equals(Object that) {
+//        if (this == that) {
+//            return true;
+//        }
+//        if (that == null) {
+//            return false;
+//        }
+//        if (getClass() != that.getClass()) {
+//            return false;
+//        }
+//        SysUser other = (SysUser) that;
+//        return (this.getId() == null ? other.getId() == null : this.getId().equals(other.getId()))
+//                && (this.getName() == null ? other.getName() == null : this.getName().equals(other.getName()))
+//                && (this.getPassword() == null ? other.getPassword() == null : this.getPassword().equals(other.getPassword()))
+//                && (this.getSalt() == null ? other.getSalt() == null : this.getSalt().equals(other.getSalt()))
+//                && (this.getEmail() == null ? other.getEmail() == null : this.getEmail().equals(other.getEmail()))
+//                && (this.getMobile() == null ? other.getMobile() == null : this.getMobile().equals(other.getMobile()))
+//                && (this.getStatus() == null ? other.getStatus() == null : this.getStatus().equals(other.getStatus()))
+//                && (this.getDeptId() == null ? other.getDeptId() == null : this.getDeptId().equals(other.getDeptId()))
+//                && (this.getCreateBy() == null ? other.getCreateBy() == null : this.getCreateBy().equals(other.getCreateBy()))
+//                && (this.getCreateTime() == null ? other.getCreateTime() == null : this.getCreateTime().equals(other.getCreateTime()))
+//                && (this.getLastUpdateBy() == null ? other.getLastUpdateBy() == null : this.getLastUpdateBy().equals(other.getLastUpdateBy()))
+//                && (this.getLastUpdateTime() == null ? other.getLastUpdateTime() == null : this.getLastUpdateTime().equals(other.getLastUpdateTime()))
+//                && (this.getDelFlag() == null ? other.getDelFlag() == null : this.getDelFlag().equals(other.getDelFlag()))
+//                && (this.getUsertype() == null ? other.getUsertype() == null : this.getUsertype().equals(other.getUsertype()))
+//                && (this.getTenantId() == null ? other.getTenantId() == null : this.getTenantId().equals(other.getTenantId()))
+//                && (this.getSex() == null ? other.getSex() == null : this.getSex().equals(other.getSex()))
+//                && (this.getJobCode() == null ? other.getJobCode() == null : this.getJobCode().equals(other.getJobCode()))
+//                && (this.getOpenid() == null ? other.getOpenid() == null : this.getOpenid().equals(other.getOpenid()));
+//    }
+
+//    @Override
+//    public int hashCode() {
+//        final int prime = 31;
+//        int result = 1;
+//        result = prime * result + ((getId() == null) ? 0 : getId().hashCode());
+//        result = prime * result + ((getName() == null) ? 0 : getName().hashCode());
+//        result = prime * result + ((getPassword() == null) ? 0 : getPassword().hashCode());
+//        result = prime * result + ((getSalt() == null) ? 0 : getSalt().hashCode());
+//        result = prime * result + ((getEmail() == null) ? 0 : getEmail().hashCode());
+//        result = prime * result + ((getMobile() == null) ? 0 : getMobile().hashCode());
+//        result = prime * result + ((getStatus() == null) ? 0 : getStatus().hashCode());
+//        result = prime * result + ((getDeptId() == null) ? 0 : getDeptId().hashCode());
+//        result = prime * result + ((getCreateBy() == null) ? 0 : getCreateBy().hashCode());
+//        result = prime * result + ((getCreateTime() == null) ? 0 : getCreateTime().hashCode());
+//        result = prime * result + ((getLastUpdateBy() == null) ? 0 : getLastUpdateBy().hashCode());
+//        result = prime * result + ((getLastUpdateTime() == null) ? 0 : getLastUpdateTime().hashCode());
+//        result = prime * result + ((getDelFlag() == null) ? 0 : getDelFlag().hashCode());
+//        result = prime * result + ((getUsertype() == null) ? 0 : getUsertype().hashCode());
+//        result = prime * result + ((getTenantId() == null) ? 0 : getTenantId().hashCode());
+//        result = prime * result + ((getSex() == null) ? 0 : getSex().hashCode());
+//        result = prime * result + ((getJobCode() == null) ? 0 : getJobCode().hashCode());
+//        result = prime * result + ((getOpenid() == null) ? 0 : getOpenid().hashCode());
+//        return result;
+//    }
+//
+//    @Override
+//    public String toString() {
+//        StringBuilder sb = new StringBuilder();
+//        sb.append(getClass().getSimpleName());
+//        sb.append(" [");
+//        sb.append("Hash = ").append(hashCode());
+//        sb.append(", id=").append(id);
+//        sb.append(", name=").append(name);
+//        sb.append(", password=").append(password);
+//        sb.append(", salt=").append(salt);
+//        sb.append(", email=").append(email);
+//        sb.append(", mobile=").append(mobile);
+//        sb.append(", status=").append(status);
+//        sb.append(", deptId=").append(deptId);
+//        sb.append(", createBy=").append(createBy);
+//        sb.append(", createTime=").append(createTime);
+//        sb.append(", lastUpdateBy=").append(lastUpdateBy);
+//        sb.append(", lastUpdateTime=").append(lastUpdateTime);
+//        sb.append(", delFlag=").append(delFlag);
+//        sb.append(", usertype=").append(usertype);
+//        sb.append(", tenantId=").append(tenantId);
+//        sb.append(", sex=").append(sex);
+//        sb.append(", jobCode=").append(jobCode);
+//        sb.append(", openid=").append(openid);
+//        sb.append(", serialVersionUID=").append(serialVersionUID);
+//        sb.append("]");
+//        return sb.toString();
+//    }
+}

+ 16 - 0
src/main/java/com/ydtech/modules/admin/service/SysUserService.java

@@ -2,11 +2,13 @@ package com.ydtech.modules.admin.service;
 
 
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.ydtech.core.page.PageRequest;
 import com.ydtech.modules.admin.dao.SysUserDao;
 import com.ydtech.modules.admin.model.SysDept;
 import com.ydtech.modules.admin.model.SysUser;
 import com.ydtech.modules.admin.model.SysUserRole;
 import com.ydtech.core.page.PageResult;
+import com.ydtech.modules.admin.vo.SysUserInternalVO;
 import com.ydtech.modules.admin.vo.SysUserVO;
 
 import java.util.List;
@@ -48,6 +50,20 @@ public interface SysUserService extends IService<SysUser> {
 
     SysUserVO gainUserInternalByDeptId(String deptId);
 
+    PageResult gainUserPage(PageRequest pageRequest);
+
+
+    /**
+     *  获取添加用户ID
+     *
+     * @author: lig
+     * @date: 2023年05月11日 0011
+     */
+    String gainNextUserId(String deptId);
+
+
+    SysUserInternalVO gainUserSynthesisInfo(String userId);
+
 }
 //public interface SysUserService extends SysUserDao {
 //    SysUser findByUsername(String username);

+ 89 - 4
src/main/java/com/ydtech/modules/admin/service/impl/SysUserServiceImpl.java

@@ -4,16 +4,25 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ydtech.core.page.PageRequest;
 import com.ydtech.core.page.PageResult;
 import com.ydtech.modules.admin.dao.SysUserMapper;
+import com.ydtech.modules.admin.model.SysDept;
 import com.ydtech.modules.admin.model.SysMenu;
 import com.ydtech.modules.admin.model.SysUser;
 import com.ydtech.modules.admin.model.SysUserRole;
+import com.ydtech.modules.admin.service.SysDeptService;
 import com.ydtech.modules.admin.service.SysMenuService;
 import com.ydtech.modules.admin.service.SysRoleMenuService;
 import com.ydtech.modules.admin.service.SysUserService;
+import com.ydtech.modules.admin.vo.SysUserBaseVO;
+import com.ydtech.modules.admin.vo.SysUserInternalVO;
 import com.ydtech.modules.admin.vo.SysUserVO;
+import com.ydtech.modules.esm.model.EsmUserAgentCheck;
+import com.ydtech.modules.esm.model.EsmUserInternal;
+import com.ydtech.modules.esm.service.EsmUserInternalService;
 import com.ydtech.utils.StringUtils;
+import com.ydtech.utils.idgen.IdGenerate;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.jdbc.core.BatchPreparedStatementSetter;
 import org.springframework.jdbc.core.JdbcTemplate;
@@ -21,9 +30,7 @@ import org.springframework.stereotype.Service;
 
 import java.sql.PreparedStatement;
 import java.sql.SQLException;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
+import java.util.*;
 import java.util.function.Function;
 import java.util.stream.Collectors;
 
@@ -36,6 +43,8 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser>
     private SysMenuService sysMenuService;
     @Autowired
     private SysRoleMenuService sysRoleMenuService;
+    @Autowired
+    private SysDeptService sysDeptService;
 
     @Override
     public SysUser findByUsername(String username) {
@@ -152,7 +161,7 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser>
         List<String> ids = lsSysUser.stream().map(SysUser::getId).collect(Collectors.toList());
 
         LambdaUpdateWrapper<SysUser> lqw = new LambdaUpdateWrapper<>();
-        lqw.set(SysUser::getDelFlag,"1");
+        lqw.set(SysUser::getDelFlag,"-1");
         lqw.in(SysUser::getId,ids);
         return update(lqw)==true?ids.size():0;
 
@@ -186,6 +195,82 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser>
     public SysUserVO gainUserInternalByDeptId(String deptId) {
         return super.baseMapper.gainInternalUserByDeptId(deptId);
     }
+
+    @Override
+    public PageResult gainUserPage(PageRequest pageRequest) {
+
+        PageResult<SysUserBaseVO> pageResult = new PageResult();
+        //获取分页数量
+        int total = super.baseMapper.gainUserBaseInfoCount(pageRequest);
+
+
+        //计算mysql分页起索引
+        int firstIndex = pageRequest.getPageNum()==1?0:(pageRequest.getPageNum()-1) * pageRequest.getPageSize() +1;
+        //请求替换分页开始索引
+        pageRequest.setPageNum(firstIndex);
+
+        //计算mysql分页总页数
+        int totalPages = total % pageRequest.getPageSize() == 0?total / pageRequest.getPageSize():total / pageRequest.getPageSize() +1;
+
+//        if(pageRequest.getPageNum() > 0){
+//            int newPageNum = pageRequest.getPageNum() -1;
+//            pageRequest.setPageNum(newPageNum * pageRequest.getPageSize());
+//        }
+        pageResult.setContent(super.baseMapper.gainUserBaseInfo(pageRequest));
+
+
+        //响应
+        pageResult.setTotalSize(total);
+        pageResult.setPageNum(pageRequest.getPageNum());
+        pageResult.setPageSize(pageRequest.getPageSize());
+        pageResult.setTotalPages(totalPages);
+
+        return pageResult;
+    }
+
+    @Override
+    public String gainNextUserId(String deptId) {
+        int noCount = 3;//顺序号是几位的
+        String nextPK;
+        QueryWrapper<SysUser> lq = new QueryWrapper<>();
+        lq.select(" MAX(id) as id ");
+        lq.eq("dept_id",deptId);
+
+        SysUser userMaxId = getOne(lq);
+
+
+        String maxId = "";
+        if(null != userMaxId) maxId = userMaxId.getId();
+
+        if (StringUtils.isNullOrEmpty(maxId)) {
+            nextPK = deptId + "001";
+        } else {
+            nextPK = IdGenerate.nextCode(maxId, noCount);
+        }
+
+
+        return nextPK;
+    }
+
+    @Override
+    public SysUserInternalVO gainUserSynthesisInfo(String userId) {
+        SysUserInternalVO vo = new SysUserInternalVO();
+
+        SysUser sysUser = getById(userId);
+//        EsmUserInternal sysUserInternal = esmUserInternalService.selectByPk(userId);
+
+        String pDeptId = sysUser.getDeptId();
+        if(pDeptId.indexOf("D") > 1){
+            pDeptId = sysUser.getDeptId().substring(0,pDeptId.indexOf("D"));
+        }
+        SysDept sysDept = sysDeptService.getById(pDeptId);
+
+        vo.setSysUser(sysUser);
+        vo.setSysDept(sysDept);
+//        vo.setSysUserInternal(sysUserInternal);
+
+        return vo;
+    }
 }
 //@Service
 //public class SysUserServiceImpl extends SysUserDaoImpl

+ 41 - 0
src/main/java/com/ydtech/modules/admin/vo/SysUserBaseVO.java

@@ -0,0 +1,41 @@
+package com.ydtech.modules.admin.vo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * 基础用户信息
+ *
+ * @author: lig
+ * @date: 2023年05月10日 0010
+ */
+@Data
+@ApiModel
+public class SysUserBaseVO {
+
+    @ApiModelProperty(value = "用户ID")
+    private String userId;
+    @ApiModelProperty(value = "名称")
+    private String name;
+    @ApiModelProperty(value = "性别")
+    private String sex;
+    @ApiModelProperty(value = "手机号")
+    private String mobile;
+    @ApiModelProperty(value = "状态")
+    private String status;
+    @ApiModelProperty(value = "部门ID")
+    private String deptId;
+    @ApiModelProperty(value = "部门名称")
+    private String deptName;
+    @ApiModelProperty(value = "上级部门Id")
+    private String pDeptId;
+    @ApiModelProperty(value = "上级部门名称")
+    private String pDeptName;
+    @ApiModelProperty(value = "岗位名称")
+    private String jobName;
+    @ApiModelProperty(value = "审核状态")
+    private String approvalStatus;
+
+
+}

+ 33 - 0
src/main/java/com/ydtech/modules/admin/vo/SysUserInternalVO.java

@@ -0,0 +1,33 @@
+package com.ydtech.modules.admin.vo;
+
+import com.ydtech.modules.admin.model.SysDept;
+import com.ydtech.modules.admin.model.SysUser;
+import com.ydtech.modules.esm.model.EsmUserAgentCheck;
+import com.ydtech.modules.esm.model.EsmUserInternal;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * 用户信息  包含基础 Internal
+ *
+ * @author: lig
+ * @date: 2023年05月10日 0010
+ */
+@Data
+@ApiModel
+public class SysUserInternalVO {
+
+
+    @ApiModelProperty("基础用户")
+    private SysUser sysUser;
+    @ApiModelProperty("用户详细信息")
+    private EsmUserInternal sysUserInternal;
+    private EsmUserAgentCheck esmUserAgent;
+    @ApiModelProperty("部门")
+    private SysDept sysDept;
+
+
+
+
+}

+ 165 - 0
src/main/java/com/ydtech/modules/admin/vo/SysUserSynthesisInfoVO.java

@@ -0,0 +1,165 @@
+package com.ydtech.modules.admin.vo;
+
+import com.ydtech.modules.admin.model.SysUser;
+import com.ydtech.modules.esm.model.EsmUserAgentCheck;
+import com.ydtech.modules.esm.model.EsmUserInternal;
+import lombok.Data;
+
+/**
+ * 用户综合信息
+ *
+ * @author: lig
+ * @date: 2023-05-11
+ */
+@Data
+//@ApiModel
+public class SysUserSynthesisInfoVO {
+
+
+    private SysUser sysUser;
+    private EsmUserInternal sysUserInternal;
+    private EsmUserAgentCheck esmUserAgent;
+
+
+//    /**
+//     * base ================================
+//     */
+//
+//
+//    @ApiModelProperty(value = "用户ID")
+//    private String userId;
+//
+//    @ApiModelProperty(value = "用户名")
+//    private String name;
+//
+//    @ApiModelProperty(value = "密码")
+//    private String password;
+//
+////    @ApiModelProperty(value = "盐")
+////    private String salt;
+//
+//    @ApiModelProperty(value = "邮箱")
+//    private String email;
+//
+//    @ApiModelProperty(value = "手机号")
+//    private String mobile;
+//
+//    @ApiModelProperty(value = "状态  1:正常   0:离司 2:新注册")
+//    private String status;
+//
+//    @ApiModelProperty(value = "机构ID")
+//    private String deptId;
+//
+////    @ApiModelProperty(value = "创建人")
+////    private String create_by;
+////
+////    @ApiModelProperty(value = "创建时间")
+////    private String create_time;
+//
+////    @ApiModelProperty(value = "更新人")
+////    private String last_update_by;
+////
+////    @ApiModelProperty(value = "更新时间")
+////    private String last_update_time;
+//
+////    @ApiModelProperty(value = "是否删除  -1:已删除  0:正常")
+////    private String del_flag;
+//
+//    @ApiModelProperty(value = "用户类型:0:系统用户 1:后线人员 2:代理人员")
+//    private String usertype;
+//
+//    @ApiModelProperty(value = "所属租户")
+//    private String tenantId;
+//
+//    @ApiModelProperty(value = "性别")
+//    private String sex;
+//
+//    @ApiModelProperty(value = "岗位")
+//    private String jobCode;
+//
+//    @ApiModelProperty(value = "微信id")
+//    private String openId;
+//
+//    @ApiModelProperty(value = "审批状态   0 申请审核 1 审核通过 2 审核不通过 3 退回修改")
+//    private String approvalStatus;
+//
+//
+//    /**
+//     * Internal ================================
+//     */
+//
+//    @ApiModelProperty(value = "居住地址")
+//    private String addressnow;
+//    @ApiModelProperty(value = "民族")
+//    private String nations;
+//    @ApiModelProperty(value = "政治面貌")
+//    private String politicalstatus;
+//    @ApiModelProperty(value = "毕业院校")
+//    private String college;
+//    @ApiModelProperty(value = "身份证号")
+//    private String identity;
+//    @ApiModelProperty(value = "学历")
+//    private String education;
+//    @ApiModelProperty(value = "开户行")
+//    private String bankname;
+//    @ApiModelProperty(value = "开户账号")
+//    private String accountno;
+//    @ApiModelProperty(value = "户口地址")
+//    private String addressresident;
+//    @ApiModelProperty(value = "健康状况")
+//    private String health;
+//    @ApiModelProperty(value = "邮政编码")
+//    private String postalcode;
+//    @ApiModelProperty(value = "住宅电话")
+//    private String phonehouse;
+//    @ApiModelProperty(value = "毕业时间")
+//    private String collegetm;
+//    @ApiModelProperty(value = "专业")
+//    private String speciality;
+//    @ApiModelProperty(value = "籍贯")
+//    private String nativeplace;
+//    @ApiModelProperty(value = "工作性质")
+//    private String worktype;
+//    @ApiModelProperty(value = "血型")
+//    private String blood;
+//    @ApiModelProperty(value = "业务员职业证书号:")
+//    private String saleno;
+//    @ApiModelProperty(value = "原工作单位")
+//    private String orglast;
+//    @ApiModelProperty(value = "工作职务")
+//    private String joblast;
+//    @ApiModelProperty(value = "爱好特长")
+//    private String hobby;
+//    @ApiModelProperty(value = "紧急联系人姓名")
+//    private String namespecial;
+//    @ApiModelProperty(value = "紧急联系人电话:")
+//    private String phonespecial;
+//    @ApiModelProperty(value = "是否二次入司")
+//    private String intimes;
+//    @ApiModelProperty(value = "签约时间(财)")
+//    private String contracttime;
+//    @ApiModelProperty(value = "是否团队长(财)  0 否 1 是")
+//    private String isteamleader;
+//    @ApiModelProperty(value = "后线人员档案号")
+//    private String documentno;
+//    @ApiModelProperty(value = "后线人员HR编码")
+//    private String hrcode;
+//    @ApiModelProperty(value = "转正时间")
+//    private String regulartm;
+//    @ApiModelProperty(value = "入司时间")
+//    private String intime;
+//    @ApiModelProperty(value = "薪资等级")
+//    private String salarycode;
+//    @ApiModelProperty(value = "出生日期")
+//    private String birthday;
+//    @ApiModelProperty(value = "婚姻状况")
+//    private String marrycode;
+//    //    @ApiModelProperty(value = " 0 申请审核 1 审核通过 2 审核不通过 3 退回修改   99:离司")
+////    private String status;
+//    @ApiModelProperty(value = "所属团队")
+//    private String whichteam;
+//    @ApiModelProperty(value = "审核意见(后线人员和代理人的审核意见都用这个)")
+//    private String remark;
+
+
+}

+ 75 - 0
src/main/java/com/ydtech/modules/fnc/controller/TaxController.java

@@ -0,0 +1,75 @@
+package com.ydtech.modules.fnc.controller;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.ydtech.core.page.HttpResult;
+import com.ydtech.modules.fnc.dao.TaxToolMapper;
+import com.ydtech.modules.fnc.model.FncBook;
+import com.ydtech.modules.fnc.model.TaxTool;
+import com.ydtech.modules.fnc.service.BookService;
+import com.ydtech.modules.fnc.service.TaxToolService;
+import com.ydtech.modules.fnc.vo.FncBookReq;
+import com.ydtech.utils.DateUtil;
+import io.swagger.annotations.*;
+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;
+
+import javax.servlet.http.HttpServletRequest;
+import java.math.BigDecimal;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * 税务控制层
+ *
+ * @author: lig
+ * @date: 2023年05月11日 0011
+ */
+@Api(tags = "税务控制层")
+@RestController
+@RequestMapping("/tax")
+public class TaxController {
+
+//    @Autowired
+//    private TaxToolMapper taxToolMapper;
+    @Autowired
+    private TaxToolService taxToolService;
+
+
+    @ApiOperation(value = "保存")
+    @ApiResponses({
+            @ApiResponse(code = 500, message = "出现异常"),
+            @ApiResponse(code = 200, message = "请求成功")
+    })
+    @PostMapping(value = "/save")
+    public HttpResult save(@RequestBody TaxTool taxTool) {
+
+        Map m = taxToolService.gainTaxInfo();
+        // -1:小于;   0 :等于;   1 :大于
+        if (taxTool.getMoney().compareTo(new BigDecimal(m.get("allowMoney").toString())) == 1){
+            return HttpResult.error("可用报税金额不足");
+        }
+
+        taxTool.setDate(new Date());
+        taxToolService.save(taxTool);
+
+        return HttpResult.ok();
+    }
+
+    @ApiOperation(value = "获取可报税额")
+    @ApiResponses({
+            @ApiResponse(code = 500, message = "出现异常"),
+            @ApiResponse(code = 200, message = "请求成功")
+    })
+    @PostMapping(value = "/gainUpTaxMoney")
+    public HttpResult gainUpTaxMoney() {
+        return HttpResult.ok(taxToolService.gainTaxInfo());
+    }
+
+
+
+}

+ 8 - 0
src/main/java/com/ydtech/modules/fnc/dao/TaxToolMapper.java

@@ -0,0 +1,8 @@
+package com.ydtech.modules.fnc.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ydtech.modules.fnc.model.TaxTool;
+
+public interface TaxToolMapper extends BaseMapper<TaxTool> {
+
+}

+ 40 - 0
src/main/java/com/ydtech/modules/fnc/model/TaxTool.java

@@ -0,0 +1,40 @@
+package com.ydtech.modules.fnc.model;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.Date;
+
+@TableName(value = "fnc_tax_tool")
+@Data
+@ApiModel(value = "税务工具", description = "税务工具")
+public class TaxTool implements Serializable {
+
+    private static final long serialVersionUID = -9026881180080083597L;
+
+    @ApiModelProperty(value = "id")
+    @TableId(value = "id", type = IdType.ASSIGN_ID)
+    private String id;
+
+    @ApiModelProperty(value = "年度报税最大金额")
+    @TableField(value = "year_max_money")
+    private String yearMaxMoney;
+
+    @ApiModelProperty(value = "日期")
+    @TableField(value = "date")
+    private Date date;
+
+    @ApiModelProperty(value = "金额")
+    @TableField(value = "money")
+    private BigDecimal money;
+
+
+
+}

+ 26 - 0
src/main/java/com/ydtech/modules/fnc/service/TaxToolService.java

@@ -0,0 +1,26 @@
+package com.ydtech.modules.fnc.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ydtech.core.page.HttpResult;
+import com.ydtech.modules.admin.model.SysUser;
+import com.ydtech.modules.fnc.model.FncBook;
+import com.ydtech.modules.fnc.model.TaxTool;
+import com.ydtech.modules.fnc.vo.FncBookReq;
+
+import javax.servlet.http.HttpServletRequest;
+import java.util.Map;
+
+/**
+ *
+ * @author: lig
+ * @date: 2023年05月11日 0011
+ */
+public interface TaxToolService extends IService<TaxTool> {
+    /**
+     * 获取报税信息
+     *
+     * @return
+     */
+    Map gainTaxInfo();
+
+}

+ 77 - 0
src/main/java/com/ydtech/modules/fnc/service/impl/TaxToolServiceImpl.java

@@ -0,0 +1,77 @@
+package com.ydtech.modules.fnc.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.github.pagehelper.PageHelper;
+import com.ydtech.constants.SysConstants;
+import com.ydtech.core.page.HttpResult;
+import com.ydtech.core.page.PageResult;
+import com.ydtech.modules.admin.dao.SysUserMapper;
+import com.ydtech.modules.admin.model.SysUser;
+import com.ydtech.modules.admin.service.SysUserService;
+import com.ydtech.modules.fnc.dao.FncBookMapper;
+import com.ydtech.modules.fnc.dao.TaxToolMapper;
+import com.ydtech.modules.fnc.model.FncBook;
+import com.ydtech.modules.fnc.model.TaxTool;
+import com.ydtech.modules.fnc.service.BookService;
+import com.ydtech.modules.fnc.service.TaxToolService;
+import com.ydtech.modules.fnc.vo.FncBookReq;
+import com.ydtech.security.utils.PubUserInfo;
+import com.ydtech.utils.DateUtil;
+import com.ydtech.utils.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import javax.servlet.http.HttpServletRequest;
+import java.math.BigDecimal;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.function.Function;
+
+@Service
+public class TaxToolServiceImpl extends ServiceImpl<TaxToolMapper, TaxTool>
+        implements TaxToolService {
+
+
+    @Override
+    public Map gainTaxInfo() {
+        String sectionStart = DateUtil.nowDateMonthFirstDay(DateUtil.gainFrontOneYear());
+        String sectionEnd = DateUtil.nowDateMonthFirstDay(null);
+//
+        QueryWrapper<TaxTool> lq = new QueryWrapper();
+        lq.select("sum(money) as money");
+        lq.between("date", sectionStart, sectionEnd);
+
+        String moneyStr = getObj(lq, new Function<Object, String>() {
+            @Override
+            public String apply(Object money) {
+                return money.toString();
+            }
+        });
+
+
+        Map<String, Object> m = new HashMap<>();
+        if (StringUtils.isNotEmpty(moneyStr)) {
+
+            double resultMoneyDouble = 0;
+            BigDecimal astrictMoney = new BigDecimal(500);
+            BigDecimal usedMoney = new BigDecimal(moneyStr);
+            BigDecimal resultMoney = null;
+            resultMoney = astrictMoney.subtract(new BigDecimal(moneyStr));
+            resultMoney.setScale(2);
+            if (resultMoney.compareTo(BigDecimal.ZERO) == -1) {
+            } else {
+                resultMoneyDouble = resultMoney.doubleValue();
+            }
+
+            m.put("allowMoney", resultMoneyDouble);
+            m.put("usedMoney", usedMoney.doubleValue());
+            m.put("sectionStart",sectionStart);
+            m.put("sectionEnd",sectionEnd);
+
+        }
+            return m;
+    }
+}

+ 44 - 14
src/main/java/com/ydtech/modules/ins/controller/InsAlltrustApiController.java

@@ -5,8 +5,10 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.ydtech.aop.request.MethodLogAnnotation;
 import com.ydtech.aop.request.RequestSingleParam;
 import com.ydtech.core.page.HttpResult;
+import com.ydtech.modules.esm.dao.EsmInsAttachInsureDetailsMapper;
 import com.ydtech.modules.esm.dao.EsmInsAttachInsureMapper;
 import com.ydtech.modules.esm.model.EsmInsAttachInsure;
+import com.ydtech.modules.esm.model.EsmInsAttachInsureDetails;
 import com.ydtech.modules.esm.service.InsTaskImageService;
 import com.ydtech.modules.ins.model.ya.CarModel_Req;
 import com.ydtech.modules.ins.model.yc.CallBackRequest;
@@ -52,6 +54,8 @@ public class InsAlltrustApiController {
 
     @Autowired
     EsmInsAttachInsureMapper esmInsAttachInsureMapper;
+    @Autowired
+    EsmInsAttachInsureDetailsMapper esmInsAttachInsureDetailsMapper;
 
     @ApiOperation(value = "车型查询")
     @PostMapping("/modelQuery")
@@ -103,14 +107,14 @@ public class InsAlltrustApiController {
 
 
         //回调参数解签后示例报文:transNo=&type=1&result=0&message=&biz_policy_no=&ci_policy_no=&biz_policy_app_no=51928036020170000054&ci_policy_app_no=&status=9&remark=%3F%3F
-        Enumeration pNames= request.getParameterNames();
+        Enumeration pNames = request.getParameterNames();
 
-        while(pNames.hasMoreElements()){
-            String name = (String)pNames.nextElement();
+        while (pNames.hasMoreElements()) {
+            String name = (String) pNames.nextElement();
             log.info("永诚API方式 - 回调 - 参数:" + name);
 //            String value = request.getParameter(name);
 //            log.info("永诚API方式 - 回调 - 参数 值:" + value);
-            if(StringUtils.isNotEmpty(name)){
+            if (StringUtils.isNotEmpty(name)) {
                 String str222 = Base64Utils.getBase64Decode(name);
                 log.info("永诚API方式 - 回调 - 参数 - 解析1次后:" + str222);
                 String paramStr = Base64Utils.getBase64Decode(str222);
@@ -118,10 +122,10 @@ public class InsAlltrustApiController {
                 log.info("永诚API方式 - 回调 - 参数 - 解析2次后:" + paramStr);
                 String[] paramArr = paramStr.split("&");
 
-                Map<String,String> reqMap = new HashMap<>();
+                Map<String, String> reqMap = new HashMap<>();
                 Arrays.stream(paramArr).forEach(a -> {
                     String[] pArr = a.split("=");
-                    reqMap.put(pArr[0],pArr.length>1?pArr[1]:"");
+                    reqMap.put(pArr[0], pArr.length > 1 ? pArr[1] : "");
 
                 });
 
@@ -148,7 +152,6 @@ public class InsAlltrustApiController {
         return HttpResult.error("失败");
 
 
-
     }
 
     /*
@@ -158,7 +161,7 @@ public class InsAlltrustApiController {
     @PostMapping("/getPolicyPrint")
     public HttpResult getPolicyPrintApi(@RequestBody PolicyPrintVo policyPrintVo) {
 //    public HttpResult getPolicyPrintApi(String companyId,String type) {
-        return insYongchengApiService.getPolicyPrintApi(policyPrintVo.getCompanyId(),policyPrintVo.getRiskCode());
+        return insYongchengApiService.getPolicyPrintApi(policyPrintVo);
     }
 
     /**
@@ -169,17 +172,32 @@ public class InsAlltrustApiController {
     public HttpResult<List<EsmInsAttachInsure>> gainAccidentList(@RequestBody @Valid AccidentalDrivingQueryVo accidentalDrivingVo) {
 
         LambdaQueryWrapper<EsmInsAttachInsure> lqw = new LambdaQueryWrapper<EsmInsAttachInsure>();
-        lqw.eq(EsmInsAttachInsure::getCompanyId,accidentalDrivingVo.getCompanyCode());
-        lqw.eq(accidentalDrivingVo.getSeatNum() > 0,EsmInsAttachInsure::getSeating,accidentalDrivingVo.getSeatNum());
+        lqw.eq(EsmInsAttachInsure::getCompanyId, accidentalDrivingVo.getCompanyCode());
+        lqw.eq(accidentalDrivingVo.getSeatNum() > 0, EsmInsAttachInsure::getSeating, accidentalDrivingVo.getSeatNum());
         List<EsmInsAttachInsure> eiaiList = esmInsAttachInsureMapper.selectList(lqw);
-        if(null != eiaiList && eiaiList.size()>0){
-            return HttpResult.ok(eiaiList);
-        }
+        return HttpResult.ok(eiaiList);
 
-        return insYongchengApiService.gainAccidentList(accidentalDrivingVo);
+//        return insYongchengApiService.gainAccidentList(accidentalDrivingVo);
 //        return insYongchengApiService.gainAccidentList(companyId);
     }
 
+    /**
+     * 获得意外险列表  方案
+     */
+    @ApiOperation(value = "永诚API方式 -意外险列表 - 方案")
+    @PostMapping("/gainAccidentSchemeList")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name="accidentId",value="意外险ID",required=true,paramType="body")
+    })
+    public HttpResult<List<EsmInsAttachInsureDetails>> gainAccidentSchemeList(@RequestSingleParam(value = "accidentId") String accidentId) {
+
+        LambdaQueryWrapper<EsmInsAttachInsureDetails> lqw = new LambdaQueryWrapper<EsmInsAttachInsureDetails>();
+        lqw.eq(EsmInsAttachInsureDetails::getAttachInsureId, accidentId);
+        List<EsmInsAttachInsureDetails> list = esmInsAttachInsureDetailsMapper.selectList(lqw);
+
+        return HttpResult.ok(list);
+
+    }
 
 
     /**
@@ -193,6 +211,18 @@ public class InsAlltrustApiController {
     }
 
 
+    /**
+     * 获取地区 通过身份证地址
+     */
+    @ApiOperation(value = "永诚API方式 - 身份证地址获取地区")
+    @PostMapping("/addressGainArea")
+    public HttpResult syncAccidentInsure(String address) {
+        Map<String, String> ownerMap = insYongchengApiService.gainRegionCode(address);
+
+        return HttpResult.ok(ownerMap);
+    }
+
+
 //    /**
 //     * 测试获取redis
 //     * @

+ 3 - 0
src/main/java/com/ydtech/modules/ins/model/yc/policy/response/PolicyResponse.java

@@ -26,6 +26,9 @@ public class PolicyResponse {
     private String jqpolicyUrl;
     @JacksonXmlProperty(localName = "policyBZUrl")
     private String policyBZUrl;
+    //非车险电子保单
+    @JacksonXmlProperty(localName = "ywpolicUrl")
+    private String ywpolicUrl;
 
 //    @JacksonXmlProperty(localName = "queryResult")
 //    private QueryResult queryResult;

+ 2 - 5
src/main/java/com/ydtech/modules/ins/service/InsAlltrustApiService.java

@@ -5,10 +5,7 @@ import com.ydtech.modules.ins.model.ya.CarModel_Req;
 import com.ydtech.modules.ins.model.yc.CallBackRequest;
 import com.ydtech.modules.ins.model.yc.pay.response.AccidentResponse;
 import com.ydtech.modules.order.entity.InsAreaCompany;
-import com.ydtech.modules.order.entity.vo.AccidentalDrivingQueryVo;
-import com.ydtech.modules.order.entity.vo.AccidentalDrivingVo;
-import com.ydtech.modules.order.entity.vo.BaseQuoteInfoVo;
-import com.ydtech.modules.order.entity.vo.BaseQuoteVo;
+import com.ydtech.modules.order.entity.vo.*;
 
 import java.util.Map;
 
@@ -94,7 +91,7 @@ public interface InsAlltrustApiService {
     /**
      * 7 电子投保单获取
      */
-    HttpResult getPolicyPrintApi(String orderNo,String riskCode);
+    HttpResult getPolicyPrintApi(PolicyPrintVo policyPrintVo);
 
 
     /**

+ 55 - 28
src/main/java/com/ydtech/modules/ins/service/impl/InsAlltrustApiServiceImpl.java

@@ -48,10 +48,7 @@ import com.ydtech.modules.ins.vo.*;
 import com.ydtech.modules.order.components.InsOrdersComponents;
 import com.ydtech.modules.order.entity.InsAreaCompany;
 import com.ydtech.modules.order.entity.InsOrders;
-import com.ydtech.modules.order.entity.vo.AccidentalDrivingQueryVo;
-import com.ydtech.modules.order.entity.vo.AccidentalDrivingVo;
-import com.ydtech.modules.order.entity.vo.BaseQuoteInfoVo;
-import com.ydtech.modules.order.entity.vo.BaseQuoteVo;
+import com.ydtech.modules.order.entity.vo.*;
 import com.ydtech.modules.order.service.InsAreaCompanyService;
 import com.ydtech.modules.order.service.InsOrdersService;
 import com.ydtech.utils.HttpXmlUtil;
@@ -278,6 +275,7 @@ public class InsAlltrustApiServiceImpl implements InsAlltrustApiService {
 
         ObjectMapper xmlMapper = this.gainXmlMapper();
         String msg = "提交成功";
+        HttpResult h = HttpResult.ok(msg);
         try {
             //子订单
             InsAreaCompany iac = insAreaCompanyService.getById(quoteOrderNo);
@@ -334,6 +332,9 @@ public class InsAlltrustApiServiceImpl implements InsAlltrustApiService {
                 } else {
                     iac.setOrderstatus(InsOrderStatus.S_2.getCode());
                 }
+                if(StringUtils.toInt(order.getOrderstatus()) < StringUtils.toInt(iac.getOrderstatus())){
+                    order.setOrderstatus(iac.getOrderstatus());
+                }
             } else {
                 msg = rd.getResponseHead().getReturnMessage();
                 return HttpResult.error("核保失败" + msg);
@@ -351,12 +352,20 @@ public class InsAlltrustApiServiceImpl implements InsAlltrustApiService {
             iac.setJqappoint(""); //交强特别约定
             iac.setSyappoint(""); //商业特别约定
 
-            insAreaCompanyService.updateById(iac);
             if (InsOrderStatus.S_2.getCode().equals(InsOrderStatus.matchKey(iac.getOrderstatus()).getCode())) {
-                return HttpResult.ok(msg);
-            } else {
-                return HttpResult.error(msg + "状态:" + InsOrderStatus.matchKey(iac.getOrderstatus()).getDesc());
+                //获取缴费地址
+                getPayUrlApi(iac);
+            }else {
+                h = HttpResult.error(msg + "状态:" + InsOrderStatus.matchKey(iac.getOrderstatus()).getDesc());
             }
+            insAreaCompanyService.updateById(iac);
+            insOrdersService.updateByOrderStatus(order.getOrderno(),order.getOrderstatus());
+
+//            if (InsOrderStatus.S_2.getCode().equals(InsOrderStatus.matchKey(iac.getOrderstatus()).getCode())) {
+//                return HttpResult.ok(msg);
+//            } else {
+//                return HttpResult.error(msg + "状态:" + InsOrderStatus.matchKey(iac.getOrderstatus()).getDesc());
+//            }
 
 //            //插入轨迹表
 //            insTaskHistoryService.insertByOrderStatus(order);
@@ -368,7 +377,7 @@ public class InsAlltrustApiServiceImpl implements InsAlltrustApiService {
             log.error("===永诚API方式--核保报错(订单号-{}):{}", quoteOrderNo, e.getMessage());
             return HttpResult.error("系统错误,请联系管理员");
         }
-//        return HttpResult.ok(msg);
+        return h;
     }
 
 
@@ -547,15 +556,15 @@ public class InsAlltrustApiServiceImpl implements InsAlltrustApiService {
      * 6 电子保单
      */
     @Override
-    public HttpResult getPolicyPrintApi(String quoteOrderNo, String riskCode) {
+    public HttpResult getPolicyPrintApi(PolicyPrintVo policyPrintVo) {
         HttpResult httpResult = new HttpResult();
         try {
-            InsAreaCompany iac = insAreaCompanyService.getById(quoteOrderNo);
+            InsAreaCompany iac = insAreaCompanyService.getById(policyPrintVo.getCompanyId());
 //            InsOrder order = insOrderService.selectByPk(orderno);
             if (iac == null) {
                 return HttpResult.error("报价订单不存在");
             }
-            String policyNo = riskCode.equals("0507") ? iac.getJqpolicyno() : iac.getSypolicyno();
+            String policyNo = policyPrintVo.getRiskCode().equals("0507") ? iac.getJqpolicyno() : iac.getSypolicyno();
 
 
             //组装参数
@@ -574,7 +583,17 @@ public class InsAlltrustApiServiceImpl implements InsAlltrustApiService {
 
             if (pResp.getHead().getResponseCompleteMessageStatus().getMessageStatusCode().equals("E0000")) {
                 Map m = new HashMap();
-                m.put("url", StringUtils.isNotEmpty(pResp.getJqpolicyUrl()) ? pResp.getJqpolicyUrl() : pResp.getSypolicyUrl());
+                if(policyPrintVo.getType().equals("1")){
+                    m.put("jqFlagUrl", pResp.getPolicyBZUrl());
+                    m.put("jqUrl", "");
+                    m.put("syUrl", "");
+                }
+                if(policyPrintVo.getType().equals("2")){
+                    m.put("jqFlagUrl", pResp.getPolicyBZUrl());
+                    m.put("jqUrl", pResp.getJqpolicyUrl());
+                    m.put("syUrl", pResp.getSypolicyUrl());
+
+                }
 //                httpResult.setData(m);
 //                httpResult.setMsg(pResp.getHead().getResponseCompleteMessageStatus().getMessageStatusDescription());
                 return HttpResult.ok(pResp.getHead().getResponseCompleteMessageStatus().getMessageStatusDescription(),m);
@@ -812,6 +831,7 @@ public class InsAlltrustApiServiceImpl implements InsAlltrustApiService {
 
 
     @Override
+    @Transactional
     public HttpResult callBackApi(CallBackRequest param) {
 
 //        if (StringUtils.isNotEmpty(param.getType())) return HttpResult.error("字段:type(回调类型)  参数为空");
@@ -832,7 +852,13 @@ public class InsAlltrustApiServiceImpl implements InsAlltrustApiService {
 
                 iac = buildCallBack(iac,param);
 
+                InsOrders order = insOrdersService.getById(iac.getOrderno());
+                if(StringUtils.toInt(order.getOrderstatus()) < StringUtils.toInt(iac.getOrderstatus())){
+                    order.setOrderstatus(iac.getOrderstatus());
+                }
+
                 insAreaCompanyService.updateById(iac);
+                insOrdersService.updateByOrderStatus(order.getOrderno(),order.getOrderstatus());
 
 
 
@@ -1271,25 +1297,26 @@ public class InsAlltrustApiServiceImpl implements InsAlltrustApiService {
 //            district = city;
 //        }
 
-        if (StringUtils.isNullOrEmpty(district)) {
-            return null;
+        List<InsAlltrustRegion> areaList = new ArrayList<>();
+        if (StringUtils.isNotEmpty(district)) {
+            //查询地区
+            LambdaQueryWrapper<InsAlltrustRegion> lqw = new LambdaQueryWrapper<>();
+            lqw.eq(InsAlltrustRegion::getArea, district);
+            areaList = insAlltrustRegionMapper.selectList(lqw);
         }
 
-        //查询
-        LambdaQueryWrapper<InsAlltrustRegion> lqw = new LambdaQueryWrapper<>();
-        lqw.eq(InsAlltrustRegion::getArea, district);
-        List<InsAlltrustRegion> list = insAlltrustRegionMapper.selectList(lqw);
-        //如果地区查不到
-        if (null == list || list.size() < 1) {
-            lqw = new LambdaQueryWrapper<>();
-            lqw.eq(InsAlltrustRegion::getArea, city);
-            list = insAlltrustRegionMapper.selectList(lqw);
+
+        //如果地区查不到 用城市当地区查
+        if (null == areaList || areaList.size() < 1) {
+            LambdaQueryWrapper<InsAlltrustRegion> cityLqw = new LambdaQueryWrapper<>();
+            cityLqw.eq(InsAlltrustRegion::getArea, city);
+            areaList = insAlltrustRegionMapper.selectList(cityLqw);
         }
-        if (null != list && list.size() > 0) {
+        if (null != areaList && areaList.size() > 0) {
             Map rMap = new HashMap();
-            rMap.put("provinceCode", list.get(0).getProvinceCode());
-            rMap.put("cityCode", list.get(0).getCityCode());
-            rMap.put("areaCode", list.get(0).getAreaCode());
+            rMap.put("provinceCode", areaList.get(0).getProvinceCode());
+            rMap.put("cityCode", areaList.get(0).getCityCode());
+            rMap.put("areaCode", areaList.get(0).getAreaCode());
             return rMap;
         }
         return null;

+ 59 - 0
src/main/java/com/ydtech/modules/inv/controller/InvCompanyController.java

@@ -0,0 +1,59 @@
+package com.ydtech.modules.inv.controller;
+
+import com.ydtech.core.page.HttpResult;
+import com.ydtech.modules.fnc.model.TaxTool;
+import com.ydtech.modules.fnc.service.TaxToolService;
+import com.ydtech.modules.inv.model.InvCompany;
+import com.ydtech.modules.inv.service.InvCompanyService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiResponse;
+import io.swagger.annotations.ApiResponses;
+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;
+
+import java.math.BigDecimal;
+import java.util.Date;
+import java.util.Map;
+
+/**
+ * 发票公司控制层
+ *
+ * @author: lig
+ * @date: 2023年05月11日 0011
+ */
+@Api(tags = "发票公司控制层")
+@RestController
+@RequestMapping("inv")
+public class InvCompanyController {
+
+    @Autowired
+    private InvCompanyService invCompanyService;
+
+
+    @ApiOperation(value = "保存")
+    @ApiResponses({
+            @ApiResponse(code = 500, message = "出现异常"),
+            @ApiResponse(code = 200, message = "请求成功")
+    })
+    @PostMapping(value = "/save")
+    public HttpResult save(@RequestBody InvCompany invCompany) {
+        return HttpResult.ok(invCompanyService.save(invCompany));
+    }
+
+//    @ApiOperation(value = "获取可报税额")
+//    @ApiResponses({
+//            @ApiResponse(code = 500, message = "出现异常"),
+//            @ApiResponse(code = 200, message = "请求成功")
+//    })
+//    @PostMapping(value = "/gainUpTaxMoney")
+//    public HttpResult gainUpTaxMoney() {
+//        return HttpResult.ok(taxToolService.gainTaxInfo());
+//    }
+
+
+
+}

+ 56 - 0
src/main/java/com/ydtech/modules/inv/controller/InvInvoiceController.java

@@ -0,0 +1,56 @@
+package com.ydtech.modules.inv.controller;
+
+import com.ydtech.core.page.HttpResult;
+import com.ydtech.modules.inv.model.InvCompany;
+import com.ydtech.modules.inv.model.InvInvoiceInfo;
+import com.ydtech.modules.inv.service.InvCompanyService;
+import com.ydtech.modules.inv.service.InvInvoiceInfoService;
+import com.ydtech.modules.inv.service.InvoiceService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiResponse;
+import io.swagger.annotations.ApiResponses;
+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;
+
+/**
+ * 发票信息管理
+ *
+ * @author: lig
+ * @date: 2023-05-15
+ */
+@Api(tags = "发票信息管理")
+@RestController
+@RequestMapping("inv")
+public class InvInvoiceController {
+
+    @Autowired
+    private InvInvoiceInfoService invInvoiceInfoService;
+
+
+    @ApiOperation(value = "保存")
+    @ApiResponses({
+            @ApiResponse(code = 500, message = "出现异常"),
+            @ApiResponse(code = 200, message = "请求成功")
+    })
+    @PostMapping(value = "/save")
+    public HttpResult save(@RequestBody InvInvoiceInfo invInvoiceInfo) {
+        return HttpResult.ok(invInvoiceInfoService.save(invInvoiceInfo));
+    }
+
+//    @ApiOperation(value = "获取可报税额")
+//    @ApiResponses({
+//            @ApiResponse(code = 500, message = "出现异常"),
+//            @ApiResponse(code = 200, message = "请求成功")
+//    })
+//    @PostMapping(value = "/gainUpTaxMoney")
+//    public HttpResult gainUpTaxMoney() {
+//        return HttpResult.ok(taxToolService.gainTaxInfo());
+//    }
+
+
+
+}

+ 112 - 112
src/main/java/com/ydtech/modules/inv/controller/InvPayableStatementController.java

@@ -1,112 +1,112 @@
-package com.ydtech.modules.inv.controller;
-
-import cn.afterturn.easypoi.excel.ExcelImportUtil;
-import cn.afterturn.easypoi.excel.entity.ImportParams;
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.ydtech.core.page.HttpResult;
-import com.ydtech.core.page.PageResult;
-import com.ydtech.exception.SystemException;
-import com.ydtech.modules.inv.convert.InvPayableStatementConvert;
-import com.ydtech.modules.inv.model.InvPayableStatement;
-import com.ydtech.modules.inv.model.vo.InvPayableStatementVo;
-import com.ydtech.modules.inv.model.vo.PayableStatementSearchVo;
-import com.ydtech.modules.inv.service.InvPayableStatementService;
-import com.ydtech.utils.JudgeUtils;
-import com.ydtech.utils.StringUtils;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiOperation;
-import org.springframework.web.bind.annotation.*;
-import org.springframework.web.multipart.MultipartFile;
-
-import java.util.Arrays;
-import java.util.List;
-import java.util.stream.Collectors;
-
-@Api("应付明细表")
-@RestController
-@RequestMapping("/inv")
-public class InvPayableStatementController {
-
-    private final InvPayableStatementService invPayableStatementService;
-
-    public InvPayableStatementController(InvPayableStatementService invPayableStatementService) {
-        this.invPayableStatementService = invPayableStatementService;
-    }
-
-    @PostMapping("/payableStatement/import")
-    @ApiOperation("导入excal")
-    public HttpResult importStudentList(@RequestParam(name = "file") MultipartFile file) throws Exception {
-        /*使用easypoi获取文件数据*/
-        ImportParams params = new ImportParams();
-        params.setTitleRows(2);
-        params.setHeadRows(2);
-        /*主键设置,如果该单元格无值则被认为无效数据*/
-        params.setKeyIndex(0);
-        /*获取excel表格中数据,并封装为一个结果对象*/
-        List<InvPayableStatement> students = ExcelImportUtil.importExcel(file.getInputStream(), InvPayableStatement.class, params);
-        List<InvPayableStatement> collect = students.stream().parallel().filter(a -> a.getSigningDate() != null).collect(Collectors.toList());
-        boolean b = invPayableStatementService.insertBatch(collect);
-        return JudgeUtils.save(b);
-    }
-
-
-    @GetMapping("/payableStatement")
-    @ApiOperation("查询信息")
-    public HttpResult query(PayableStatementSearchVo basePageVO) {
-
-        Page<InvPayableStatement> page = new Page<>(basePageVO.getPageNum(), basePageVO.getPageSize());
-        QueryWrapper<InvPayableStatement> wrapper = new QueryWrapper<>();
-
-        String businessChannel = basePageVO.getBusinessChannel();
-        if (!StringUtils.isNullOrEmpty(businessChannel)) {
-            wrapper.like("business_channel", businessChannel);
-        }
-
-        String numberPlate = basePageVO.getNumberPlate();
-        if (!StringUtils.isNullOrEmpty(numberPlate)) {
-            wrapper.eq("number_plate", numberPlate);
-        }
-
-        String startDate = basePageVO.getStartDate();
-        String endDate = basePageVO.getEndDate();
-        if (!StringUtils.isNullOrEmpty(startDate) && !StringUtils.isNullOrEmpty(endDate)) {
-            wrapper.between("signing_date", startDate, endDate);
-        }
-
-        Page<InvPayableStatement> invPayableStatementIPage = invPayableStatementService.page(page, wrapper);
-        PageResult<InvPayableStatement> convert = new PageResult<>();
-        convert.setContent(invPayableStatementIPage.getRecords());
-        convert.setPageNum((int) invPayableStatementIPage.getCurrent());
-        convert.setPageSize((int) invPayableStatementIPage.getSize());
-        convert.setTotalPages((int) invPayableStatementIPage.getPages());
-        convert.setTotalSize(invPayableStatementIPage.getTotal());
-        return HttpResult.ok(convert);
-
-    }
-
-    @PostMapping("/payableStatement")
-    @ApiOperation("添加")
-    public HttpResult add(@RequestBody InvPayableStatementVo invPayableStatementVo) {
-        InvPayableStatement invPayableStatement = InvPayableStatementConvert.INSTANCE.Vo2Dto(invPayableStatementVo);
-        boolean save = invPayableStatementService.save(invPayableStatement);
-        return JudgeUtils.add(save);
-    }
-
-    @DeleteMapping("/payableStatement/{id}")
-    @ApiOperation("删除")
-    public HttpResult delete(@PathVariable Integer[] id) {
-        boolean b = invPayableStatementService.removeByIds(Arrays.asList(id));
-        return JudgeUtils.delete(b);
-    }
-
-    @PutMapping("/payableStatement/{id}")
-    @ApiOperation("修改")
-    public HttpResult modify(@PathVariable Integer id, @RequestBody InvPayableStatementVo invPayableStatementVo) {
-        InvPayableStatement invPayableStatement = InvPayableStatementConvert.INSTANCE.Vo2Dto(invPayableStatementVo);
-        invPayableStatement.setId(id);
-        boolean b = invPayableStatementService.updateById(invPayableStatement);
-        return JudgeUtils.modify(b);
-    }
-
-}
+//package com.ydtech.modules.inv.controller;
+//
+//import cn.afterturn.easypoi.excel.ExcelImportUtil;
+//import cn.afterturn.easypoi.excel.entity.ImportParams;
+//import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+//import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+//import com.ydtech.core.page.HttpResult;
+//import com.ydtech.core.page.PageResult;
+//import com.ydtech.exception.SystemException;
+//import com.ydtech.modules.inv.convert.InvPayableStatementConvert;
+//import com.ydtech.modules.inv.model.InvPayableStatement;
+//import com.ydtech.modules.inv.model.vo.InvPayableStatementVo;
+//import com.ydtech.modules.inv.model.vo.PayableStatementSearchVo;
+//import com.ydtech.modules.inv.service.InvPayableStatementService;
+//import com.ydtech.utils.JudgeUtils;
+//import com.ydtech.utils.StringUtils;
+//import io.swagger.annotations.Api;
+//import io.swagger.annotations.ApiOperation;
+//import org.springframework.web.bind.annotation.*;
+//import org.springframework.web.multipart.MultipartFile;
+//
+//import java.util.Arrays;
+//import java.util.List;
+//import java.util.stream.Collectors;
+//
+//@Api("应付明细表")
+//@RestController
+//@RequestMapping("/inv")
+//public class InvPayableStatementController {
+//
+//    private final InvPayableStatementService invPayableStatementService;
+//
+//    public InvPayableStatementController(InvPayableStatementService invPayableStatementService) {
+//        this.invPayableStatementService = invPayableStatementService;
+//    }
+//
+//    @PostMapping("/payableStatement/import")
+//    @ApiOperation("导入excal")
+//    public HttpResult importStudentList(@RequestParam(name = "file") MultipartFile file) throws Exception {
+//        /*使用easypoi获取文件数据*/
+//        ImportParams params = new ImportParams();
+//        params.setTitleRows(2);
+//        params.setHeadRows(2);
+//        /*主键设置,如果该单元格无值则被认为无效数据*/
+//        params.setKeyIndex(0);
+//        /*获取excel表格中数据,并封装为一个结果对象*/
+//        List<InvPayableStatement> students = ExcelImportUtil.importExcel(file.getInputStream(), InvPayableStatement.class, params);
+//        List<InvPayableStatement> collect = students.stream().parallel().filter(a -> a.getSigningDate() != null).collect(Collectors.toList());
+//        boolean b = invPayableStatementService.insertBatch(collect);
+//        return JudgeUtils.save(b);
+//    }
+//
+//
+//    @GetMapping("/payableStatement")
+//    @ApiOperation("查询信息")
+//    public HttpResult query(PayableStatementSearchVo basePageVO) {
+//
+//        Page<InvPayableStatement> page = new Page<>(basePageVO.getPageNum(), basePageVO.getPageSize());
+//        QueryWrapper<InvPayableStatement> wrapper = new QueryWrapper<>();
+//
+//        String businessChannel = basePageVO.getBusinessChannel();
+//        if (!StringUtils.isNullOrEmpty(businessChannel)) {
+//            wrapper.like("business_channel", businessChannel);
+//        }
+//
+//        String numberPlate = basePageVO.getNumberPlate();
+//        if (!StringUtils.isNullOrEmpty(numberPlate)) {
+//            wrapper.eq("number_plate", numberPlate);
+//        }
+//
+//        String startDate = basePageVO.getStartDate();
+//        String endDate = basePageVO.getEndDate();
+//        if (!StringUtils.isNullOrEmpty(startDate) && !StringUtils.isNullOrEmpty(endDate)) {
+//            wrapper.between("signing_date", startDate, endDate);
+//        }
+//
+//        Page<InvPayableStatement> invPayableStatementIPage = invPayableStatementService.page(page, wrapper);
+//        PageResult<InvPayableStatement> convert = new PageResult<>();
+//        convert.setContent(invPayableStatementIPage.getRecords());
+//        convert.setPageNum((int) invPayableStatementIPage.getCurrent());
+//        convert.setPageSize((int) invPayableStatementIPage.getSize());
+//        convert.setTotalPages((int) invPayableStatementIPage.getPages());
+//        convert.setTotalSize(invPayableStatementIPage.getTotal());
+//        return HttpResult.ok(convert);
+//
+//    }
+//
+//    @PostMapping("/payableStatement")
+//    @ApiOperation("添加")
+//    public HttpResult add(@RequestBody InvPayableStatementVo invPayableStatementVo) {
+//        InvPayableStatement invPayableStatement = InvPayableStatementConvert.INSTANCE.Vo2Dto(invPayableStatementVo);
+//        boolean save = invPayableStatementService.save(invPayableStatement);
+//        return JudgeUtils.add(save);
+//    }
+//
+//    @DeleteMapping("/payableStatement/{id}")
+//    @ApiOperation("删除")
+//    public HttpResult delete(@PathVariable Integer[] id) {
+//        boolean b = invPayableStatementService.removeByIds(Arrays.asList(id));
+//        return JudgeUtils.delete(b);
+//    }
+//
+//    @PutMapping("/payableStatement/{id}")
+//    @ApiOperation("修改")
+//    public HttpResult modify(@PathVariable Integer id, @RequestBody InvPayableStatementVo invPayableStatementVo) {
+//        InvPayableStatement invPayableStatement = InvPayableStatementConvert.INSTANCE.Vo2Dto(invPayableStatementVo);
+//        invPayableStatement.setId(id);
+//        boolean b = invPayableStatementService.updateById(invPayableStatement);
+//        return JudgeUtils.modify(b);
+//    }
+//
+//}

+ 69 - 69
src/main/java/com/ydtech/modules/inv/controller/InvoiceController.java

@@ -1,69 +1,69 @@
-package com.ydtech.modules.inv.controller;
-
-import com.ydtech.core.page.HttpResult;
-import com.ydtech.modules.inv.service.InvoiceService;
-import com.ydtech.modules.inv.vo.req.InvoiceReq;
-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;
-
-import javax.servlet.http.HttpServletRequest;
-import java.util.List;
-
-/**
- * @Author: shixk
- * @create: 2022/2/9 17:21
- * description: 发票管理
- */
-@RequestMapping("inv")
-@RestController
-public class InvoiceController {
-
-    @Autowired
-    private InvoiceService invoiceService;
-
-    @ApiOperation("保存发票信息")
-    //@PreAuthorize("hasAuthority('sys:inv:save')")
-    @PostMapping(value = "/saveInvoice")
-    public HttpResult save(@RequestBody InvoiceReq req, HttpServletRequest request) {
-        HttpResult result = null;
-        try {
-            result = invoiceService.save(req, request);
-        } catch (Exception e) {
-            e.printStackTrace();
-            return HttpResult.error("发票信息保存失败!" + e.getMessage());
-        }
-        return HttpResult.ok(result);
-    }
-
-    @ApiOperation("保存多条发票信息")
-    //@PreAuthorize("hasAuthority('sys:inv:save')")
-    @PostMapping(value = "/saveInvoiceList")
-    public HttpResult saveList(@RequestBody List<InvoiceReq> reqList, HttpServletRequest request) {
-        HttpResult result = null;
-        try {
-            result = invoiceService.saveList(reqList, request);
-        } catch (Exception e) {
-            e.printStackTrace();
-            return HttpResult.error("发票信息保存失败!" + e.getMessage());
-        }
-        return HttpResult.ok(result);
-    }
-
-    @ApiOperation("查询发票信息")
-    // @PreAuthorize("hasAuthority('sys:inv:view')")
-    @PostMapping(value = "/selelctInvoice")
-    public HttpResult selelctInvoice(@RequestBody InvoiceReq req) {
-        HttpResult result = null;
-        try {
-            result = invoiceService.select(req);
-        } catch (Exception e) {
-            result = HttpResult.error("查询发票信息失败!" + e.getMessage());
-            e.printStackTrace();
-        }
-        return result;
-    }
-}
+//package com.ydtech.modules.inv.controller;
+//
+//import com.ydtech.core.page.HttpResult;
+//import com.ydtech.modules.inv.service.InvoiceService;
+//import com.ydtech.modules.inv.vo.req.InvoiceReq;
+//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;
+//
+//import javax.servlet.http.HttpServletRequest;
+//import java.util.List;
+//
+///**
+// * @Author: shixk
+// * @create: 2022/2/9 17:21
+// * description: 发票管理
+// */
+//@RequestMapping("inv")
+//@RestController
+//public class InvoiceController {
+//
+//    @Autowired
+//    private InvoiceService invoiceService;
+//
+//    @ApiOperation("保存发票信息")
+//    //@PreAuthorize("hasAuthority('sys:inv:save')")
+//    @PostMapping(value = "/saveInvoice")
+//    public HttpResult save(@RequestBody InvoiceReq req, HttpServletRequest request) {
+//        HttpResult result = null;
+//        try {
+//            result = invoiceService.save(req, request);
+//        } catch (Exception e) {
+//            e.printStackTrace();
+//            return HttpResult.error("发票信息保存失败!" + e.getMessage());
+//        }
+//        return HttpResult.ok(result);
+//    }
+//
+//    @ApiOperation("保存多条发票信息")
+//    //@PreAuthorize("hasAuthority('sys:inv:save')")
+//    @PostMapping(value = "/saveInvoiceList")
+//    public HttpResult saveList(@RequestBody List<InvoiceReq> reqList, HttpServletRequest request) {
+//        HttpResult result = null;
+//        try {
+//            result = invoiceService.saveList(reqList, request);
+//        } catch (Exception e) {
+//            e.printStackTrace();
+//            return HttpResult.error("发票信息保存失败!" + e.getMessage());
+//        }
+//        return HttpResult.ok(result);
+//    }
+//
+//    @ApiOperation("查询发票信息")
+//    // @PreAuthorize("hasAuthority('sys:inv:view')")
+//    @PostMapping(value = "/selelctInvoice")
+//    public HttpResult selelctInvoice(@RequestBody InvoiceReq req) {
+//        HttpResult result = null;
+//        try {
+//            result = invoiceService.select(req);
+//        } catch (Exception e) {
+//            result = HttpResult.error("查询发票信息失败!" + e.getMessage());
+//            e.printStackTrace();
+//        }
+//        return result;
+//    }
+//}

+ 9 - 0
src/main/java/com/ydtech/modules/inv/dao/InvCompanyMapper.java

@@ -0,0 +1,9 @@
+package com.ydtech.modules.inv.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ydtech.modules.fnc.model.TaxTool;
+import com.ydtech.modules.inv.model.InvCompany;
+
+public interface InvCompanyMapper extends BaseMapper<InvCompany> {
+
+}

+ 18 - 0
src/main/java/com/ydtech/modules/inv/dao/InvInvoiceInfoMapper.java

@@ -0,0 +1,18 @@
+package com.ydtech.modules.inv.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ydtech.modules.inv.model.InvInvoiceInfo;
+
+/**
+* @author Administrator
+* @description 针对表【inv_invoice_info(发票表- 信息)】的数据库操作Mapper
+* @createDate 2023-05-15 14:22:55
+* @Entity generator.domain.InvInvoiceInfo
+*/
+public interface InvInvoiceInfoMapper extends BaseMapper<InvInvoiceInfo> {
+
+}
+
+
+
+

+ 115 - 0
src/main/java/com/ydtech/modules/inv/model/InvCompany.java

@@ -0,0 +1,115 @@
+package com.ydtech.modules.inv.model;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.Date;
+
+@TableName(value ="inv_company")
+@Data
+@ApiModel(value = "发票公司", description = "发票公司")
+public class InvCompany implements Serializable {
+
+    /**
+     * ID
+     */
+    @TableId(value = "id", type = IdType.ASSIGN_ID)
+    private String id;
+
+    /**
+     * 营业性质ID
+     */
+    @TableField(value = "quality_id")
+    private String qualityId;
+
+    /**
+     * 营业性质
+     */
+    @TableField(value = "quality_name")
+    private String qualityName;
+
+    /**
+     * 所属地
+     */
+    @TableField(value = "area_name")
+    private String areaName;
+
+    /**
+     * 企业名称
+     */
+    @TableField(value = "enterprise_name")
+    private String enterpriseName;
+
+    /**
+     * 法人
+     */
+    @TableField(value = "legal_person")
+    private String legalPerson;
+
+    /**
+     * 税率
+     */
+    @TableField(value = "tax_rate")
+    private String taxRate;
+
+    /**
+     * 成立日期
+     */
+    @TableField(value = "found_date")
+    private Date foundDate;
+
+    /**
+     * 管理员
+     */
+    @TableField(value = "admin")
+    private String admin;
+
+    /**
+     * 创建人
+     */
+    @TableField(value = "create_by")
+    private String createBy;
+
+    /**
+     * 创建时间
+     */
+    @TableField(value = "create_time")
+    private Date createTime;
+
+    /**
+     * 更新人
+     */
+    @TableField(value = "update_by")
+    private String updateBy;
+
+    /**
+     * 更新时间
+     */
+    @TableField(value = "update_time")
+    private Date updateTime;
+
+    /**
+     * 是否删除  -1:已删除  0:正常
+     */
+    @TableField(value = "del_flag")
+    private Integer delFlag;
+
+    /**
+     * 报税限额度(年)
+     */
+    @TableField(value = "tax_limit")
+    private String taxLimit;
+
+    @TableField(exist = false)
+    private static final long serialVersionUID = 1L;
+
+
+
+}

+ 192 - 0
src/main/java/com/ydtech/modules/inv/model/InvInvoiceInfo.java

@@ -0,0 +1,192 @@
+package com.ydtech.modules.inv.model;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.Date;
+
+import lombok.Data;
+
+/**
+ * 发票信息
+ *
+ * @TableName inv_invoice_info
+ */
+@TableName(value = "inv_invoice_info")
+@Data
+public class InvInvoiceInfo implements Serializable {
+    /**
+     * ID
+     */
+    @TableId(value = "id", type = IdType.ASSIGN_ID)
+    private String id;
+
+    /**
+     * 开票员
+     */
+    @TableField(value = "invoice_clerk")
+    private String invoiceClerk;
+
+    /**
+     * 开票科目ID
+     */
+    @TableField(value = "subjects_id")
+    private String subjectsId;
+
+    /**
+     * 开票科目
+     */
+    @TableField(value = "subjects")
+    private String subjects;
+
+    /**
+     * 开票方ID
+     */
+    @TableField(value = "inv_company_id")
+    private String invCompanyId;
+
+    /**
+     * 开票方
+     */
+    @TableField(value = "inv_company_name")
+    private String invCompanyName;
+
+    /**
+     * 对方单位名称
+     */
+    @TableField(value = "peer_company_name")
+    private String peerCompanyName;
+
+    /**
+     * 发票号码
+     */
+    @TableField(value = "invoice_num")
+    private String invoiceNum;
+
+    /**
+     * 发票数
+     */
+    @TableField(value = "invoice_quantity")
+    private Integer invoiceQuantity;
+
+    /**
+     * 开票日期
+     */
+    @TableField(value = "invoice_date")
+    private Date invoiceDate;
+
+    /**
+     * 不含税金额
+     */
+    @TableField(value = "tax_exclusive_price")
+    private BigDecimal taxExclusivePrice;
+
+    /**
+     * 税率
+     */
+    @TableField(value = "tax_rate")
+    private String taxRate;
+
+    /**
+     * 税额
+     */
+    @TableField(value = "tax_amounts")
+    private BigDecimal taxAmounts;
+
+    /**
+     * 开票金额
+     */
+    @TableField(value = "Invoice_amount")
+    private BigDecimal invoiceAmount;
+
+    /**
+     * 发票类型
+     */
+    @TableField(value = "Invoice_type")
+    private String invoiceType;
+
+    /**
+     * 进账日期
+     */
+    @TableField(value = "income_date")
+    private Date incomeDate;
+
+    /**
+     * 进账金额
+     */
+    @TableField(value = "income_money")
+    private BigDecimal incomeMoney;
+
+    /**
+     * 未进账金额
+     */
+    @TableField(value = "not_income_money")
+    private BigDecimal notIncomeMoney;
+
+    /**
+     * 出账日期
+     */
+    @TableField(value = "out_income_date")
+    private Date outIncomeDate;
+
+    /**
+     * 出账金额
+     */
+    @TableField(value = "out_income_money")
+    private BigDecimal outIncomeMoney;
+
+    /**
+     * 利润点
+     */
+    @TableField(value = "profit_point")
+    private String profitPoint;
+
+    /**
+     * 毛利润
+     */
+    @TableField(value = "gross_profit")
+    private String grossProfit;
+
+    /**
+     * 手续费
+     */
+    @TableField(value = "procedure_fee")
+    private String procedureFee;
+
+    /**
+     * 备注
+     */
+    @TableField(value = "remark")
+    private String remark;
+
+    /**
+     * 创建人
+     */
+    @TableField(value = "create_by")
+    private String createBy;
+
+    /**
+     * 创建时间
+     */
+    @TableField(value = "create_time")
+    private Date createTime;
+
+    /**
+     * 更新人
+     */
+    @TableField(value = "update_by")
+    private String updateBy;
+
+    /**
+     * 更新时间
+     */
+    @TableField(value = "update_time")
+    private Date updateTime;
+
+    @TableField(exist = false)
+    private static final long serialVersionUID = 1L;
+}

+ 13 - 0
src/main/java/com/ydtech/modules/inv/service/InvCompanyService.java

@@ -0,0 +1,13 @@
+package com.ydtech.modules.inv.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ydtech.modules.inv.model.InvCompany;
+
+/**
+* @author Administrator
+* @description 针对表【inv_company(开票公司)】的数据库操作Service
+* @createDate 2023-05-15 11:03:06
+*/
+public interface InvCompanyService extends IService<InvCompany> {
+
+}

+ 13 - 0
src/main/java/com/ydtech/modules/inv/service/InvInvoiceInfoService.java

@@ -0,0 +1,13 @@
+package com.ydtech.modules.inv.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ydtech.modules.inv.model.InvInvoiceInfo;
+
+/**
+* @author Administrator
+* @description 针对表【inv_invoice_info(发票表- 信息)】的数据库操作Service
+* @createDate 2023-05-15 14:22:55
+*/
+public interface InvInvoiceInfoService extends IService<InvInvoiceInfo> {
+
+}

+ 22 - 0
src/main/java/com/ydtech/modules/inv/service/impl/InvCompanyServiceImpl.java

@@ -0,0 +1,22 @@
+package com.ydtech.modules.inv.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ydtech.modules.inv.dao.InvCompanyMapper;
+import com.ydtech.modules.inv.model.InvCompany;
+import com.ydtech.modules.inv.service.InvCompanyService;
+import org.springframework.stereotype.Service;
+
+/**
+* @author Administrator
+* @description 针对表【inv_company(开票公司)】的数据库操作Service实现
+* @createDate 2023-05-15 11:03:06
+*/
+@Service
+public class InvCompanyServiceImpl extends ServiceImpl<InvCompanyMapper, InvCompany>
+    implements InvCompanyService {
+
+}
+
+
+
+

+ 22 - 0
src/main/java/com/ydtech/modules/inv/service/impl/InvInvoiceInfoServiceImpl.java

@@ -0,0 +1,22 @@
+package com.ydtech.modules.inv.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ydtech.modules.inv.dao.InvInvoiceInfoMapper;
+import com.ydtech.modules.inv.model.InvInvoiceInfo;
+import com.ydtech.modules.inv.service.InvInvoiceInfoService;
+import org.springframework.stereotype.Service;
+
+/**
+* @author Administrator
+* @description 针对表【inv_invoice_info(发票表- 信息)】的数据库操作Service实现
+* @createDate 2023-05-15 14:22:55
+*/
+@Service
+public class InvInvoiceInfoServiceImpl extends ServiceImpl<InvInvoiceInfoMapper, InvInvoiceInfo>
+    implements InvInvoiceInfoService {
+
+}
+
+
+
+

+ 45 - 5
src/main/java/com/ydtech/utils/DateUtil.java

@@ -2,11 +2,9 @@ package com.ydtech.utils;
 
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
-import java.time.Instant;
-import java.time.LocalDateTime;
-import java.time.LocalTime;
-import java.time.ZoneId;
+import java.time.*;
 import java.time.format.DateTimeFormatter;
+import java.time.temporal.TemporalAdjusters;
 import java.util.Calendar;
 import java.util.Date;
 import java.util.Locale;
@@ -233,8 +231,50 @@ public class DateUtil {
     }
 
 
+    /**
+     * 获取前一年 的前一个月
+     *
+     * @author: lig
+     * @date: 2023年05月11日 0011
+     */
+    public static LocalDate gainFrontOneYear(){
+        // 获取当前日期前一天的日期
+        LocalDate localDate = LocalDate.now().minusYears(1).minusMonths(1);//1代表提前多少天
+//        String date = localDate.format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));//转为String类型
+        return localDate;
+    }
+
+    /**
+     *  获取现在日期月的第一天
+     *
+     * @author: lig
+     * @date: 2023年05月11日 0011
+     */
+    public static String nowDateMonthFirstDay(LocalDate localDate){
+        LocalDate firstDayOfThisMonth = null;
+        if(null != localDate){
+            firstDayOfThisMonth = localDate.with(TemporalAdjusters.firstDayOfMonth());
+        }else{
+            //获取本月的第一天
+            LocalDate now = LocalDate.now();
+            firstDayOfThisMonth = now.with(TemporalAdjusters.firstDayOfMonth());
+        }
+        String date = firstDayOfThisMonth.format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));//转为String类型
+        return date;
+
+    }
+
+
+
     public static void main(String[] args) throws ParseException {
 
-        System.out.println(dayOfLastMonth(new Date()));
+//        System.out.println(dayOfLastMonth(new Date()));
+        System.err.println("前一年:"+gainFrontOneYear());
+
+
+        //获取本月的第一天
+        LocalDate now = LocalDate.now();
+        LocalDate firstDayOfThisMonth = now.with(TemporalAdjusters.firstDayOfMonth());
+        System.out.println("firstDayOfThisMonth = " + firstDayOfThisMonth);   //2018-09-01
     }
 }