Browse Source

Merge branch 'master' of ssh://101.201.226.163:50022/ccsens_wiki/pt_ccsens

ptos
zy_Java 4 years ago
parent
commit
da369637fb
  1. 45
      src/main/java/com/ccsens/ptccsens/api/MemberController.java
  2. 57
      src/main/java/com/ccsens/ptccsens/api/OcrController.java
  3. 10
      src/main/java/com/ccsens/ptccsens/api/ProjectFinanceController.java
  4. 10
      src/main/java/com/ccsens/ptccsens/api/finance/FinanceController.java
  5. 162
      src/main/java/com/ccsens/ptccsens/bean/dto/DeliverDto.java
  6. 30
      src/main/java/com/ccsens/ptccsens/bean/dto/FinanceDto.java
  7. 15
      src/main/java/com/ccsens/ptccsens/bean/dto/ProjectFinanceDto.java
  8. 150
      src/main/java/com/ccsens/ptccsens/bean/vo/DeliverVo.java
  9. 25
      src/main/java/com/ccsens/ptccsens/bean/vo/FinanceVo.java
  10. 25
      src/main/java/com/ccsens/ptccsens/bean/vo/OcrVo.java
  11. 23
      src/main/java/com/ccsens/ptccsens/bean/vo/ProjectFinanceVo.java
  12. 9
      src/main/java/com/ccsens/ptccsens/persist/dao/FinanceDao.java
  13. 7
      src/main/java/com/ccsens/ptccsens/persist/dao/PluFinanceApplyDao.java
  14. 24
      src/main/java/com/ccsens/ptccsens/persist/dao/ProDeliverDao.java
  15. 26
      src/main/java/com/ccsens/ptccsens/service/DeliverService.java
  16. 9
      src/main/java/com/ccsens/ptccsens/service/FinanceService.java
  17. 16
      src/main/java/com/ccsens/ptccsens/service/IDeliverService.java
  18. 9
      src/main/java/com/ccsens/ptccsens/service/IFinanceService.java
  19. 14
      src/main/java/com/ccsens/ptccsens/service/IOcrService.java
  20. 8
      src/main/java/com/ccsens/ptccsens/service/IProjectFinanceService.java
  21. 52
      src/main/java/com/ccsens/ptccsens/service/OcrService.java
  22. 8
      src/main/java/com/ccsens/ptccsens/service/ProjectFinanceService.java
  23. 9
      src/main/java/com/ccsens/ptccsens/util/BasicsConstant.java
  24. 57
      src/main/resources/mapper_dao/FinanceDao.xml
  25. 40
      src/main/resources/mapper_dao/PluFinanceApplyDao.xml
  26. 20
      src/main/resources/mapper_dao/ProDeliverDao.xml

45
src/main/java/com/ccsens/ptccsens/api/MemberController.java

@ -0,0 +1,45 @@
package com.ccsens.ptccsens.api;
import com.ccsens.cloudutil.annotation.MustLogin;
import com.ccsens.ptccsens.bean.dto.DeliverDto;
import com.ccsens.ptccsens.bean.vo.DeliverVo;
import com.ccsens.ptccsens.service.IDeliverService;
import com.ccsens.util.JsonResponse;
import com.ccsens.util.bean.dto.QueryDto;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Controller;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import java.util.List;
/**
* @author AUSU
*/
@Api(tags = "交付物相关" )
@RestController
@RequestMapping("/member")
@Slf4j
public class MemberController {
@Resource
private IDeliverService deliverService;
@MustLogin
@ApiOperation(value = "查询所有成员", notes = "")
@RequestMapping(value = "/queryChecker", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"})
public JsonResponse<List<DeliverVo.Checker>> queryChecker(@ApiParam @Validated @RequestBody QueryDto<DeliverDto.QueryChecker> params) throws Exception {
log.info("查询所有成员--{}", params);
List<DeliverVo.Checker> checkers = deliverService.queryChecker(params.getParam(), params.getUserId());
log.info("返回所有成员--{}", checkers);
return JsonResponse.newInstance().ok(checkers);
}
}

57
src/main/java/com/ccsens/ptccsens/api/OcrController.java

@ -0,0 +1,57 @@
package com.ccsens.ptccsens.api;
import cn.hutool.core.codec.Base64;
import cn.hutool.core.util.ImageUtil;
import com.ccsens.cloudutil.annotation.MustLogin;
import com.ccsens.ptccsens.bean.dto.ProjectFinanceDto;
import com.ccsens.ptccsens.bean.vo.OcrVo;
import com.ccsens.ptccsens.bean.vo.ProjectFinanceVo;
import com.ccsens.ptccsens.service.IOcrService;
import com.ccsens.ptccsens.util.BasicsConstant;
import com.ccsens.util.JsonResponse;
import com.ccsens.util.baidu.BaiDuDto;
import com.ccsens.util.baidu.BaiDuUtil;
import com.ccsens.util.baidu.BaiDuVo;
import com.ccsens.util.bean.dto.QueryDto;
import com.github.pagehelper.PageInfo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import lombok.extern.slf4j.Slf4j;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import javax.imageio.ImageIO;
import javax.servlet.http.Part;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.text.ParseException;
/**
* @author AUSU
*/
@Api(tags = "图片识别" )
@RestController
@RequestMapping("/ocr")
@Slf4j
public class OcrController {
@Resource
private IOcrService ocrService;
@ApiOperation(value = "图像识别", notes = "whj")
@RequestMapping(value = "/bill", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"})
public JsonResponse<OcrVo.BillInfo> identifyBill(@RequestParam(required = true) Part part) throws Exception {
log.info("图像识别");
// 压缩图像
ByteArrayOutputStream out = new ByteArrayOutputStream();
ImageUtil.scale(ImageIO.read(part.getInputStream()), out, 1f);
String img = Base64.encode(out.toByteArray());
OcrVo.BillInfo billInfo = ocrService.identifyBill(img);
log.info("图像识别结束:{}", billInfo);
return JsonResponse.newInstance().ok(billInfo);
}
}

10
src/main/java/com/ccsens/ptccsens/api/ProjectFinanceController.java

@ -83,4 +83,14 @@ public class ProjectFinanceController {
log.info("追加预算结束");
return JsonResponse.newInstance().ok();
}
@MustLogin
@ApiOperation(value = "查看所有的费用申请", notes = "")
@RequestMapping(value = "/queryAllMoneyApply", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"})
public JsonResponse<PageInfo<ProjectFinanceVo.AllMoneyApply>> queryAllMoneyApply(@ApiParam @Validated @RequestBody QueryDto<ProjectFinanceDto.QueryAllMoneyApply> params) throws Exception{
log.info("查看所有的费用申请开始{}",params);
PageInfo<ProjectFinanceVo.AllMoneyApply> financeOfProjectList = projectFinanceService.queryAllMoneyApply(params.getParam(),params.getUserId());
log.info("查看所有的费用申请结束:{}",financeOfProjectList);
return JsonResponse.newInstance().ok(financeOfProjectList);
}
}

10
src/main/java/com/ccsens/ptccsens/api/finance/FinanceController.java

@ -6,6 +6,7 @@ import com.ccsens.ptccsens.bean.vo.FinanceVo;
import com.ccsens.ptccsens.service.IFinanceService;
import com.ccsens.util.JsonResponse;
import com.ccsens.util.bean.dto.QueryDto;
import com.github.pagehelper.PageInfo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
@ -78,4 +79,13 @@ public class FinanceController {
log.info("审批结束");
return JsonResponse.newInstance().ok();
}
@MustLogin
@ApiOperation(value = "查看当前用户的费用申请历史信息(奖金)", notes = "")
@RequestMapping(value = "/personalHistory", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"})
public JsonResponse<PageInfo<FinanceVo.PersonalHistory>> personalHistory(@ApiParam @Validated @RequestBody QueryDto<FinanceDto.PersonalHistory> params) {
log.info("查看当前用户的费用申请历史信息(奖金):{}",params);
PageInfo<FinanceVo.PersonalHistory> history = financeService.queryPersonalHistory(params.getParam(), params.getUserId());
log.info("查看当前用户的费用申请历史信息(奖金)结束:{}", history);
return JsonResponse.newInstance().ok(history);
}
}

162
src/main/java/com/ccsens/ptccsens/bean/dto/DeliverDto.java

@ -0,0 +1,162 @@
package com.ccsens.ptccsens.bean.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.*;
import java.math.BigDecimal;
import java.util.List;
@Data
public class DeliverDto {
@Data
@ApiModel("查询所有检查人")
public static class QueryChecker{
@NotNull(message = "请选择项目")
@ApiModelProperty("项目id")
private Long projectId;
}
@Data
@ApiModel("查询任务下的交付物信息")
public static class GetTaskDeliver{
@NotNull(message = "请选择任务")
@ApiModelProperty("任务id(分解id)")
private Long taskId;
}
@Data
@ApiModel("查询交付物的上传记录")
public static class QueryRecord{
@NotNull(message = "请选择交付物信息")
@ApiModelProperty("交付物Id")
private Long deliverId;
}
@Data
@ApiModel("查询交付物的检查记录")
public static class QueryCheckLog{
@NotNull(message = "请选择交付物")
@ApiModelProperty("提交记录id")
private Long deliverRecordId;
}
@Data
@ApiModel("添加交付物")
public static class SaveDeliver{
@NotNull(message = "请选择项目")
@ApiModelProperty("项目id")
private Long projectId;
@NotNull(message = "请选择任务")
@ApiModelProperty("任务id(分解id)")
private Long taskId;
@NotBlank(message = "交付物名称不能为空")
@ApiModelProperty("交付物名称")
private String deliverName;
}
@Data
@ApiModel("提交交付物信息")
public static class SubmitDeliver{
@NotNull(message = "请选择项目")
@ApiModelProperty("项目id")
private Long projectId;
@NotNull(message = "请选择交付物")
@ApiModelProperty("交付物id")
private Long deliverId;
@NotNull(message = "请传入文件信息")
@ApiModelProperty("文件信息")
private List<String> fileList;
@NotNull(message = "请选择检查人")
@ApiModelProperty("检查人id")
private List<Long> checkerList;
}
@Data
@ApiModel("检查交付物信息")
public static class CheckDeliver{
@NotNull(message = "请选择项目")
@ApiModelProperty("项目id")
private Long projectId;
@NotNull(message = "请选择要审核交付物")
@ApiModelProperty("交付物提交记录id")
private Long deliverRecordId;
@ApiModelProperty("审核状态 0未检查,1已通过,2驳回 默认1已通过")
private byte type = 1;
@ApiModelProperty("备注信息")
private String remark;
@ApiModelProperty("分数")
private BigDecimal score;
}
// @Data
// @ApiModel("检查交付物")
// public static class CheckDeliver{
// @NotNull(message = "检查信息错误")
// @ApiModelProperty("检查记录id")
// private Long checkId;
// @NotNull(message = "项目信息错误")
// @ApiModelProperty("项目id")
// private Long projectId;
// @ApiModelProperty("检查状态(1-通过,2-驳回)")
// private Byte status;
// @ApiModelProperty("分数")
// private String score;
// @ApiModelProperty("评论")
// private String remark;
// }
//
// @Data
// @ApiModel("提交交付物")
// public static class SaveDeliver{
// @NotNull(message = "请选择项目")
// @ApiModelProperty("项目id")
// private Long projectId;
// @NotNull(message = "请选择任务")
// @ApiModelProperty("分解任务id")
// private Long taskSubId;
// @ApiModelProperty("文本内容")
// private String content;
// @ApiModelProperty("文件信息")
// private List<FileVo.FileInfo> fileInfoList;
//// @ApiModelProperty("文件id")
//// private Long fileId;
//// @ApiModelProperty("文件路径")
//// private String filePath;
// @NotEmpty(message = "请选择检查人")
// @ApiModelProperty("检查人列表")
// private List<Long> checkerList;
// }
//
// @Data
// @ApiModel("查询任务的交付物历史")
// public static class QueryDeliverOfTask{
// @NotNull(message = "请选择项目信息")
// @ApiModelProperty("项目id")
// private Long projectId;
// @NotNull(message = "请选择任务")
// @ApiModelProperty("任务分解id")
// private Long taskSubId;
// }
//
// @Data
// @ApiModel("查询项目的交付物历史")
// public static class QueryDeliverOfProject {
// @NotNull(message = "请选择项目信息")
// @ApiModelProperty("项目id")
// private Long projectId;
// @ApiModelProperty("第几页")
// @Min(value = 1)
// private int pageNum = 1;
// @ApiModelProperty("每页多少条")
// @Min(value = 1)
// @Max(value=100)
// private int pageSize = 10;
// }
}

30
src/main/java/com/ccsens/ptccsens/bean/dto/FinanceDto.java

@ -42,10 +42,8 @@ public class FinanceDto {
@NotNull
@ApiModelProperty("所属部门")
private String department;
@NotNull
@ApiModelProperty("所属项目id")
private Long projectId;
@NotNull
@ApiModelProperty("所属任务id")
private Long taskDetailId;
@NotNull
@ -55,7 +53,6 @@ public class FinanceDto {
private Long categoryId;
@ApiModelProperty("名目id")
private Long rowId;
@NotNull
@ApiModelProperty("备注信息")
private String remark;
@NotNull
@ -107,12 +104,35 @@ public class FinanceDto {
@ApiModelProperty("审核id")
private Long financeCheckId;
@NotNull
@Min(value = 1)
@Max(value = 2)
@Min(1)
@Max(2)
@ApiModelProperty("审核状态 1已通过 2驳回")
private Byte checkStatus;
@ApiModelProperty("备注")
private String remark;
}
@Data
@ApiModel("财务-个人历史-请求")
public static class PersonalHistory {
@NotNull
@ApiModelProperty("所属项目id")
private Long projectId;
@ApiModelProperty("任务id,不填查全部")
private Long taskDetailId;
@ApiModelProperty("任务名")
private String taskName;
@Min(0)
@Max(1)
@ApiModelProperty("查询类型,默认0普通的申请,1奖金申请记录")
private byte type = 0;
@Min(1)
@ApiModelProperty("页数,默认1")
private int pageNum = 1;
@Min(1)
@Max(100)
@ApiModelProperty("每页的数量,默认10,最大100")
private int pageSize = 10;
}
}

15
src/main/java/com/ccsens/ptccsens/bean/dto/ProjectFinanceDto.java

@ -78,4 +78,19 @@ public class ProjectFinanceDto {
@ApiModelProperty("追加预算")
private Long appendBudget;
}
@Data
@ApiModel("查看所有的费用申请-入参")
public static class QueryAllMoneyApply {
@NotNull
@ApiModelProperty("项目id")
private Long projectId;
@NotNull
@ApiModelProperty("名目Id")
private Long rowId;
@ApiModelProperty("页数")
private Integer pageNum = 1;
@ApiModelProperty("每页的数量")
private Integer pageSize = 10;
}
}

150
src/main/java/com/ccsens/ptccsens/bean/vo/DeliverVo.java

@ -0,0 +1,150 @@
package com.ccsens.ptccsens.bean.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
import java.util.List;
/**
* @author
*/
@Data
public class DeliverVo {
@Data
@ApiModel("查询任务下的交付物信息")
public static class DeliverOfTask{
@ApiModelProperty("交付物id")
private Long deliverId;
@ApiModelProperty("交付物名字")
private String deliverName;
@ApiModelProperty("交付物提交记录id")
private Long deliverRecordId;
@ApiModelProperty("文件路径")
private List<String> details;
@ApiModelProperty("提交时间")
private Long submitTime;
@ApiModelProperty("提交人Id")
private Long submitMemberId;
@ApiModelProperty("提交人名称")
private String submitMemberName;
@ApiModelProperty("检查人列表")
private List<CheckerInfo> checkerList;
}
@Data
@ApiModel("检查人信息")
public static class CheckerInfo{
@ApiModelProperty("检查记录id")
private Long checkId;
@ApiModelProperty("检查人id")
private Long checkerId;
@ApiModelProperty("检查人名字")
private String checkerName;
@ApiModelProperty("检查状态(0-未审核,1-通过,2-驳回)")
private Byte status;
@ApiModelProperty("分数")
private BigDecimal score;
@ApiModelProperty("备注")
private String remark;
@ApiModelProperty("是不是我(0-否,1-是)")
private Byte isMine;
@ApiModelProperty("检查时间")
private Long checkTime;
}
@Data
@ApiModel("查询交付物提交记录")
public static class QueryDeliverRecord{
@ApiModelProperty("交付物id")
private Long deliverId;
@ApiModelProperty("交付物名字")
private String deliverName;
@ApiModelProperty("交付物提交id")
private List<DeliverRecord> deliverRecordList;
}
@Data
@ApiModel("交付物提交记录")
public static class DeliverRecord{
@ApiModelProperty("交付物提交记录id")
private Long deliverRecordId;
@ApiModelProperty("文件路径")
private List<String> details;
@ApiModelProperty("提交时间")
private Long submitTime;
@ApiModelProperty("检查人列表")
private List<CheckerInfo> checkerList;
}
// @Data
// @ApiModel("检查人信息")
// public static class CheckerInfo{
// @ApiModelProperty("检查记录id")
// private String checkId;
// @ApiModelProperty("检查人id")
// private Long checkerId;
// @ApiModelProperty("检查人名字")
// private String checkerName;
// @ApiModelProperty("检查状态(0-未审核,1-通过,2-驳回)")
// private Byte status;
// @ApiModelProperty("分数")
// private String score;
// @ApiModelProperty("备注")
// private String remark;
// @ApiModelProperty("是不是我(0-否,1-是)")
// private Byte isMine;
//
// }
//
@Data
@ApiModel("所有检查人信息")
public static class Checker{
@ApiModelProperty("检查人id")
private Long memberId;
@ApiModelProperty("检查人名字")
private String name;
@ApiModelProperty("用户id")
private Long userId;
@ApiModelProperty("是不是我(0-否,1-是)")
private Byte isMine = 0;
}
//
//
// @Data
// @ApiModel("项目下的交付物记录")
// public static class DeliverOfProject{
// @ApiModelProperty("项目名称")
// private String projectName;
// @ApiModelProperty("任务列表")
// private List<DeliverOfTask> deliverOfTaskList;
// }
//
// @Data
// @ApiModel("任务的交付物历史")
// public static class DeliverOfTask{
// @ApiModelProperty("交付物id")
// private String id;
// @ApiModelProperty("上传人名字")
// private String name;
// @ApiModelProperty("任务名称")
// private String taskName;
// @ApiModelProperty("上传时间")
// private Long time;
// @ApiModelProperty("文本内容")
// private String content;
// @ApiModelProperty("文件信息")
// private List<FileVo.FileInfo> fileInfoList;
//// @ApiModelProperty("文件id")
//// private Long fileId;
//// @ApiModelProperty("文件路径")
//// private String filePath;
// @ApiModelProperty("检查人列表")
// private List<CheckerInfo> checkerList;
// }
}

25
src/main/java/com/ccsens/ptccsens/bean/vo/FinanceVo.java

@ -1,12 +1,9 @@
package com.ccsens.ptccsens.bean.vo;
import com.ccsens.ptccsens.bean.dto.FinanceDto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.apache.ibatis.annotations.Param;
import javax.validation.constraints.NotNull;
import java.util.List;
/**
@ -116,26 +113,34 @@ public class FinanceVo {
@Data
@ApiModel("财务申请详情-发票信息-返回")
public static class Invoice{
@NotNull
@ApiModelProperty("发票浏览地址")
private String url;
@NotNull
@ApiModelProperty("发票代码")
private String invoiceCode;
@NotNull
@ApiModelProperty("发票号码")
private String invoiceNumber;
@NotNull
@ApiModelProperty("金额,单位:分")
private Long money;
@NotNull
@ApiModelProperty("税额")
private Long taxMoney;
@NotNull
@ApiModelProperty("开票时间")
private Long invoiceTime;
@NotNull
@ApiModelProperty("每张发票备注信息")
private String remark;
}
@Data
@ApiModel("财务-个人历史-返回")
public static class PersonalHistory{
@ApiModelProperty("申请记录id")
private Long applyId;
@ApiModelProperty("提交人姓名")
private String submitName;
@ApiModelProperty("金额,单位:分")
private Long money;
@ApiModelProperty("申请时间")
private Long submitTime;
@ApiModelProperty("当前状态:0待审批 1已通过 2已驳回 3待放款 4:放款待确认 5已确认")
private byte applyType;
}
}

25
src/main/java/com/ccsens/ptccsens/bean/vo/OcrVo.java

@ -0,0 +1,25 @@
package com.ccsens.ptccsens.bean.vo;
import com.alibaba.fastjson.annotation.JSONField;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
public class OcrVo {
@Data
@ApiModel("发票信息")
public static class BillInfo {
@ApiModelProperty("发票代码")
private String invoiceCode;
@ApiModelProperty("发票号码")
private String invoiceNum;
@ApiModelProperty("金额")
private Long totalAmount;
@ApiModelProperty("税额")
private Long totalTax;
@ApiModelProperty("开票时间")
private Long invoiceDate;
}
}

23
src/main/java/com/ccsens/ptccsens/bean/vo/ProjectFinanceVo.java

@ -108,4 +108,27 @@ public class ProjectFinanceVo {
@ApiModelProperty("审核通过的钱")
private Long passMoney;
}
@Data
@ApiModel("查看所有的费用申请-返参")
public static class AllMoneyApply {
@ApiModelProperty("申请记录id")
private Long applyId;
@ApiModelProperty("提交人名称")
private String submitName;
@ApiModelProperty("申请人id")
private Long submitId;
@ApiModelProperty("名目id")
private Long rowId;
@ApiModelProperty("名目名称")
private String rowName;
@ApiModelProperty("金额")
private Long money;
@ApiModelProperty("申请时间")
private Long time;
@ApiModelProperty("类目id")
private Long categoryId;
@ApiModelProperty("类目名")
private String categoryName;
}
}

9
src/main/java/com/ccsens/ptccsens/persist/dao/FinanceDao.java

@ -1,5 +1,6 @@
package com.ccsens.ptccsens.persist.dao;
import com.ccsens.ptccsens.bean.dto.FinanceDto;
import com.ccsens.ptccsens.bean.po.PluFinanceCheck;
import com.ccsens.ptccsens.bean.po.PluFinanceInvoice;
import com.ccsens.ptccsens.bean.vo.FinanceVo;
@ -73,4 +74,12 @@ public interface FinanceDao {
* @return 未审核通过的数量
*/
long countNoAuditPass(@Param("applyId") Long applyId);
/**
* 查询个人历史数据
* @param param 请求
* @param userId 操作者
* @return 历史数据
*/
List<FinanceVo.PersonalHistory> queryPersonalHistory(@Param("param") FinanceDto.PersonalHistory param, @Param("userId") Long userId);
}

7
src/main/java/com/ccsens/ptccsens/persist/dao/PluFinanceApplyDao.java

@ -29,4 +29,11 @@ public interface PluFinanceApplyDao extends PluFinanceMapper {
* @return 项目下需要我申请的费用
*/
List<ProjectFinanceVo.NeedCheckByMe> queryNeedCheckByMeOfTask(@Param("taskDetailId") Long taskDetailId,@Param("userId") Long userId,@Param("projectId") Long projectId);
/**
*查看所有的费用申请
* @param projectId 项目id
* @return 所有的费用申请
*/
List<ProjectFinanceVo.AllMoneyApply> queryAllMoneyApply(@Param("projectId") Long projectId);
}

24
src/main/java/com/ccsens/ptccsens/persist/dao/ProDeliverDao.java

@ -0,0 +1,24 @@
package com.ccsens.ptccsens.persist.dao;
import com.ccsens.ptccsens.bean.vo.DeliverVo;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;
import java.util.List;
@Repository
public interface ProDeliverDao{
/**
* 查询所有检查人
* @param projectId 项目id
* @param userId userId
* @return 检查人列表
*/
List<DeliverVo.Checker> queryChecker(@Param("projectId") Long projectId, @Param("userId") Long userId);
}

26
src/main/java/com/ccsens/ptccsens/service/DeliverService.java

@ -0,0 +1,26 @@
package com.ccsens.ptccsens.service;
import com.ccsens.ptccsens.bean.dto.DeliverDto;
import com.ccsens.ptccsens.bean.vo.DeliverVo;
import com.ccsens.ptccsens.persist.dao.ProDeliverDao;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.List;
@Slf4j
@Service
@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
public class DeliverService implements IDeliverService {
@Resource
private ProDeliverDao deliverDao;
@Override
public List<DeliverVo.Checker> queryChecker(DeliverDto.QueryChecker params, Long userId) {
return deliverDao.queryChecker(params.getProjectId(),userId);
}
}

9
src/main/java/com/ccsens/ptccsens/service/FinanceService.java

@ -10,6 +10,8 @@ import com.ccsens.ptccsens.persist.mapper.*;
import com.ccsens.ptccsens.util.BasicsCodeError;
import com.ccsens.ptccsens.util.BasicsConstant;
import com.ccsens.util.exception.BaseException;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
@ -199,4 +201,11 @@ public class FinanceService implements IFinanceService {
}
}
}
@Override
public PageInfo<FinanceVo.PersonalHistory> queryPersonalHistory(FinanceDto.PersonalHistory param, Long userId) {
PageHelper.startPage(param.getPageNum(), param.getPageSize());
List<FinanceVo.PersonalHistory> list = financeDao.queryPersonalHistory(param, userId);
return new PageInfo<>(list);
}
}

16
src/main/java/com/ccsens/ptccsens/service/IDeliverService.java

@ -0,0 +1,16 @@
package com.ccsens.ptccsens.service;
import com.ccsens.ptccsens.bean.dto.DeliverDto;
import com.ccsens.ptccsens.bean.vo.DeliverVo;
import java.util.List;
public interface IDeliverService {
/**
* 查询所有检查人
* @param params 项目id
* @param userId 用户id
* @return 检查人列表
*/
List<DeliverVo.Checker> queryChecker(DeliverDto.QueryChecker params, Long userId);
}

9
src/main/java/com/ccsens/ptccsens/service/IFinanceService.java

@ -2,6 +2,7 @@ package com.ccsens.ptccsens.service;
import com.ccsens.ptccsens.bean.dto.FinanceDto;
import com.ccsens.ptccsens.bean.vo.FinanceVo;
import com.github.pagehelper.PageInfo;
import java.util.List;
@ -46,4 +47,12 @@ public interface IFinanceService {
* @param userId 操作人信息
*/
void audit(FinanceDto.Audit param, Long userId);
/**
* 查看当前用户的费用申请历史信息奖金
* @param param 查询信息
* @param userId 操作人信息
* @return 历史信息
*/
PageInfo<FinanceVo.PersonalHistory> queryPersonalHistory(FinanceDto.PersonalHistory param, Long userId);
}

14
src/main/java/com/ccsens/ptccsens/service/IOcrService.java

@ -0,0 +1,14 @@
package com.ccsens.ptccsens.service;
import com.ccsens.ptccsens.bean.vo.OcrVo;
import java.text.ParseException;
public interface IOcrService {
/**
* 发票识别
* @param img 发表base64
* @return 识别结果
*/
OcrVo.BillInfo identifyBill(String img) throws ParseException;
}

8
src/main/java/com/ccsens/ptccsens/service/IProjectFinanceService.java

@ -46,4 +46,12 @@ public interface IProjectFinanceService {
* @param userId 用户id
*/
void addBudget(ProjectFinanceDto.AddBudget param, Long userId);
/**
* 查看所有的费用申请
* @param param 入参
* @param userId 用户id
* @return 项目下所有的费用申请
*/
PageInfo<ProjectFinanceVo.AllMoneyApply> queryAllMoneyApply(ProjectFinanceDto.QueryAllMoneyApply param, Long userId);
}

52
src/main/java/com/ccsens/ptccsens/service/OcrService.java

@ -0,0 +1,52 @@
package com.ccsens.ptccsens.service;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.util.StrUtil;
import com.alibaba.druid.sql.visitor.functions.If;
import com.ccsens.ptccsens.bean.vo.OcrVo;
import com.ccsens.ptccsens.util.BasicsConstant;
import com.ccsens.util.RestTemplateUtil;
import com.ccsens.util.baidu.BaiDuDto;
import com.ccsens.util.baidu.BaiDuUtil;
import com.ccsens.util.baidu.BaiDuVo;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal;
import java.text.ParseException;
import java.text.SimpleDateFormat;
@Service
@Slf4j
@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
public class OcrService implements IOcrService{
@Override
public OcrVo.BillInfo identifyBill(String img) throws ParseException {
// 图像识别
BaiDuDto.GeneralBasic basic = new BaiDuDto.GeneralBasic();
basic.setImage(img);
BaiDuVo.BillBasic words = BaiDuUtil.billBasic(BasicsConstant.BaiDu.INVOICE_APP_KEY, BasicsConstant.BaiDu.INVOICE_SECRET_KEY, basic);
log.info("识别结果:{}",words);
// String token = BaiDuUtil.getToken(BasicsConstant.BaiDu.INVOICE_APP_KEY, BasicsConstant.BaiDu.INVOICE_SECRET_KEY);
// String invoiceUrl = "https://aip.baidubce.com/rest/2.0/ocr/v1/vat_invoice?access_token={}";
// String url = StrUtil.format(invoiceUrl, token);
// String result = RestTemplateUtil.postUrlEncode(url, basic);
// log.info("result:{}", result);
// 返回数据
OcrVo.BillInfo billInfo = new OcrVo.BillInfo();
if (CollectionUtil.isNotEmpty(words.getWordsResult())) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd");
BeanUtil.copyProperties(words.getWordsResult().get(0),billInfo);
billInfo.setTotalAmount(new BigDecimal(words.getWordsResult().get(0).getTotalAmount()).multiply(BigDecimal.valueOf(100)).longValue());
billInfo.setTotalTax(new BigDecimal(words.getWordsResult().get(0).getTotalTax()).multiply(BigDecimal.valueOf(100)).longValue());
billInfo.setInvoiceDate(sdf.parse(words.getWordsResult().get(0).getInvoiceDate()).getTime());
}
// personMsg.toMsg(words.getWordsResult());
return billInfo;
}
}

8
src/main/java/com/ccsens/ptccsens/service/ProjectFinanceService.java

@ -195,4 +195,12 @@ public class ProjectFinanceService implements IProjectFinanceService{
appendBudget.setAddBudget(param.getAppendBudget());
appendBudgetMapper.insertSelective(appendBudget);
}
@Override
public PageInfo<ProjectFinanceVo.AllMoneyApply> queryAllMoneyApply(ProjectFinanceDto.QueryAllMoneyApply param, Long userId) {
PageHelper.startPage(param.getPageNum(),param.getPageSize());
List<ProjectFinanceVo.AllMoneyApply> allMoneyApplyList = pluFinanceApplyDao.queryAllMoneyApply(param.getProjectId());
return new PageInfo<>(allMoneyApplyList);
}
}

9
src/main/java/com/ccsens/ptccsens/util/BasicsConstant.java

@ -52,4 +52,13 @@ public class BasicsConstant {
public static final byte INVOICE_UPLOAD_NO = 0;
public static final byte INVOICE_UPLOAD_YES = 1;
}
public static class BaiDu{
public static final String APP_KEY = "F43SLi3hDra3EgWiSi8bIH8c";
public static final String SECRET_KEY = "wGhbTXGsrbxfuCQT7WyLDndYRxrSYqbD";
public static final String INVOICE_APP_KEY = "MPTHGR2ytloHo61D1PQipjo7";
public static final String INVOICE_SECRET_KEY = "2rENBsctjjSXbRFhMCXi6CBUOUVvNrSK";
public static final String KEY = "key";
public static final String NUM = "num";
}
}

57
src/main/resources/mapper_dao/FinanceDao.xml

@ -50,25 +50,15 @@
a.remark,
a.money
FROM
t_plu_finance_apply a,
t_pro_task_detail p,
t_pro_task_detail t,
t_plu_finance_type t1,
t_plu_finance_type t2,
t_plu_finance_type t3
t_plu_finance_apply a
left join t_pro_task_detail p on a.project_id = p.id AND p.rec_status = 0
left join t_pro_task_detail t on a.task_id = t.id AND t.rec_status = 0
left join t_plu_finance_type t1 on a.type_id = t1.id AND t1.rec_status = 0
left join t_plu_finance_type t2 on a.category_id = t2.id AND t2.rec_status = 0
left join t_plu_finance_type t3 on a.row_id = t3.id AND t3.rec_status = 0
WHERE
a.project_id = p.id
AND a.task_id = t.id
AND a.type_id = t1.id
AND a.category_id = t2.id
AND a.row_id = t3.id
AND a.id = #{applyId}
a.id = #{applyId}
AND a.rec_status = 0
AND p.rec_status = 0
AND t.rec_status = 0
AND t1.rec_status = 0
AND t2.rec_status = 0
AND t3.rec_status = 0
</select>
<select id="queryInvoices" resultType="com.ccsens.ptccsens.bean.vo.FinanceVo$Invoice">
SELECT
@ -125,4 +115,37 @@
AND c.rec_status = 0
AND (l.check_status = 2 OR l.id IS NULL)
</select>
<select id="queryPersonalHistory" resultType="com.ccsens.ptccsens.bean.vo.FinanceVo$PersonalHistory">
SELECT
a.id as applyId,
a.submit_name as submitName,
a.money as money,
a.apply_time as submitTime,
a.apply_type as applyType
FROM
t_plu_finance_apply a
LEFT JOIN t_pro_task_detail d ON a.task_id = d.id
AND d.rec_status = 0
LEFT JOIN t_plu_finance_type t ON a.row_id = t.id
AND t.rec_status = 0
LEFT JOIN t_pro_member m ON a.member_id = m.id
AND m.user_id = #{userId} and m.rec_status = 0
WHERE
a.project_id = #{param.projectId}
<if test="param.taskDetailId != null and param.taskDetailId != 0">
AND a.task_id = #{param.taskDetailId}
</if>
<if test="param.taskName != null and param.taskName != ''">
AND d.NAME LIKE concat( '%', #{param.taskName}, '%' )
</if>
<choose>
<when test="param.type == 1">
AND t.NAME = '奖金'
</when>
<otherwise>
AND t.NAME != '奖金'
</otherwise>
</choose>
AND a.rec_status = 0
</select>
</mapper>

40
src/main/resources/mapper_dao/PluFinanceApplyDao.xml

@ -61,5 +61,45 @@
AND member.rec_status = 0
</select>
<select id="queryAllMoneyApply" resultType="com.ccsens.ptccsens.bean.vo.ProjectFinanceVo$AllMoneyApply">
SELECT
fa.id,
fa.submit_name,
fa.member_id,
fa.row_id,
ft.`name` AS rowName,
fa.money,
fa.apply_time AS `time`,
fa.category_id,
ft2.`name` AS categoryName
FROM
t_plu_finance AS f
LEFT JOIN (
SELECT
pt2.task_detail_id
FROM
t_pro_parent_task AS pt2
WHERE
pt2.rec_status = 0
AND pt2.parent_task_detail_id IN (
SELECT
pt1.task_detail_id
FROM
t_pro_parent_task AS pt1
WHERE
pt1.rec_status = 0
AND pt1.parent_task_detail_id = #{projectId}
)
) AS task ON f.task_id = task.task_detail_id
LEFT JOIN t_plu_finance_apply AS fa ON f.id = fa.finance_id
LEFT JOIN t_plu_finance_type AS ft ON fa.row_id = ft.id
LEFT JOIN t_plu_finance_type AS ft2 ON fa.category_id = ft2.id
WHERE
task.task_detail_id IS NOT NULL
AND fa.rec_status = 0
AND ft.rec_status = 0
AND ft2.rec_status = 0
</select>
</mapper>

20
src/main/resources/mapper_dao/ProDeliverDao.xml

@ -0,0 +1,20 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ccsens.ptccsens.persist.dao.ProDeliverDao">
<select id="queryChecker" resultType="com.ccsens.ptccsens.bean.vo.DeliverVo$Checker">
SELECT
id AS memberId,
`name`,
user_id,
if(user_id = #{userId},1,0) as isMine
FROM
t_pro_member
WHERE
rec_status = 0
AND project_id = #{projectId}
</select>
</mapper>
Loading…
Cancel
Save