提交修改

This commit is contained in:
quyixiao 2025-11-10 13:40:15 +08:00
parent ced7ad96ef
commit dc8e24159d
14 changed files with 584 additions and 19 deletions

View File

@ -0,0 +1,39 @@
package com.heyu.api.data.dao.vv;
/**
* <p>
* 结算 服务类
* </p>
*
* @author quyixiao
* @since 2025-11-10
*/
import com.heyu.api.data.entity.vv.VvMyAccountEntity;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.lz.mybatis.plugin.annotations.LIMIT;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
@Mapper
public interface VvMyAccountDao extends BaseMapper<VvMyAccountEntity> {
VvMyAccountEntity selectVvMyAccountById(@Param("id")Long id);
Long insertVvMyAccount(VvMyAccountEntity vvMyAccount);
Long insertOrUpdateVvMyAccount(VvMyAccountEntity vvMyAccount);
int updateVvMyAccountById(VvMyAccountEntity vvMyAccount);
int updateCoverVvMyAccountById(VvMyAccountEntity vvMyAccount);
int deleteVvMyAccountById(@Param("id")Long id);
@LIMIT
VvMyAccountEntity selectVvMyAccount(String type);
}

View File

@ -0,0 +1,182 @@
package com.heyu.api.data.entity.vv;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import com.lz.mybatis.plugin.annotations.AS;
import java.math.BigDecimal;
import java.util.Date;import java.util.Date;
/**
*结算
* @author quyixiao
* @since 2025-11-10
*/
@Data
@TableName("vv_my_account")
public class VvMyAccountEntity implements java.io.Serializable {
private static final long serialVersionUID = 1L;
public final static String CLASS_NAME ="com.heyu.api.data.entity.vv.VvMyAccountEntity:";
public final static String all = CLASS_NAME + "*";
public final static String id_ = CLASS_NAME + "id"; //
public final static String is_delete = CLASS_NAME + "is_delete"; // 是否删除0 1 删除
public final static String create_time = CLASS_NAME + "create_time"; // 创建时间
public final static String modify_time = CLASS_NAME + "modify_time"; // 修改时间
public final static String amount_ = CLASS_NAME + "amount"; // 账户金额
public final static String recharge_amount = CLASS_NAME + "recharge_amount"; // 充值金额
public final static String sub_amount = CLASS_NAME + "sub_amount"; // 报销金额
public final static String type_ = CLASS_NAME + "type"; // 账户类型 公款:common
//
@TableId(value = "id", type = IdType.AUTO)
private Long id;
//是否删除0 1 删除
private Integer isDelete;
//创建时间
private Date createTime;
//修改时间
private Date modifyTime;
//账户金额
private BigDecimal amount;
//充值金额
private BigDecimal rechargeAmount;
//报销金额
private BigDecimal subAmount;
//账户类型 公款:common
private String type;
/**
*
* @return
*/
public Long getId() {
return id;
}
/**
*
* @param id
*/
public void setId(Long id) {
this.id = id;
}
/**
* 是否删除0 1 删除
* @return
*/
public Integer getIsDelete() {
return isDelete;
}
/**
* 是否删除0 1 删除
* @param isDelete
*/
public void setIsDelete(Integer isDelete) {
this.isDelete = isDelete;
}
/**
* 创建时间
* @return
*/
public Date getCreateTime() {
return createTime;
}
/**
* 创建时间
* @param createTime
*/
public void setCreateTime(Date createTime) {
this.createTime = createTime;
}
/**
* 修改时间
* @return
*/
public Date getModifyTime() {
return modifyTime;
}
/**
* 修改时间
* @param modifyTime
*/
public void setModifyTime(Date modifyTime) {
this.modifyTime = modifyTime;
}
/**
* 账户金额
* @return
*/
public BigDecimal getAmount() {
return amount;
}
/**
* 账户金额
* @param amount
*/
public void setAmount(BigDecimal amount) {
this.amount = amount;
}
/**
* 充值金额
* @return
*/
public BigDecimal getRechargeAmount() {
return rechargeAmount;
}
/**
* 充值金额
* @param rechargeAmount
*/
public void setRechargeAmount(BigDecimal rechargeAmount) {
this.rechargeAmount = rechargeAmount;
}
/**
* 报销金额
* @return
*/
public BigDecimal getSubAmount() {
return subAmount;
}
/**
* 报销金额
* @param subAmount
*/
public void setSubAmount(BigDecimal subAmount) {
this.subAmount = subAmount;
}
/**
* 账户类型 公款:common
* @return
*/
public String getType() {
return type;
}
/**
* 账户类型 公款:common
* @param type
*/
public void setType(String type) {
this.type = type;
}
@Override
public String toString() {
return "VvMyAccountEntity{" +
",id=" + id +
",isDelete=" + isDelete +
",createTime=" + createTime +
",modifyTime=" + modifyTime +
",amount=" + amount +
",rechargeAmount=" + rechargeAmount +
",subAmount=" + subAmount +
",type=" + type +
"}";
}
}

View File

@ -1,12 +1,12 @@
package com.heyu.api.data.entity.vv;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import com.lz.mybatis.plugin.annotations.AS;
import java.math.BigDecimal;
import java.util.Date;import java.util.Date;
import java.util.Date;
/**
*结算
* @author quyixiao
@ -29,10 +29,11 @@ private static final long serialVersionUID = 1L;
public final static String operate_ = CLASS_NAME + "operate"; // 操作 + ,-
public final static String amount_ = CLASS_NAME + "amount"; // 金额
public final static String features_ = CLASS_NAME + "features"; // 特点
public final static String status_ = CLASS_NAME + "status"; // apply_for_approval:同意审批agree_approval: 同意审批 ,reject_approval拒绝审批
public final static String status_ = CLASS_NAME + "status"; // apply_for_approval:申请审批agree_approval: 同意审批 ,reject_approval拒绝审批
public final static String remain_amount = CLASS_NAME + "remain_amount"; // 剩下金额
public final static String create_timestamp = CLASS_NAME + "create_timestamp"; // 创建时间
public final static String modify_timestamp = CLASS_NAME + "modify_timestamp"; // 修改时间
public final static String type_ = CLASS_NAME + "type"; // common,公款
//
@TableId(value = "id", type = IdType.AUTO)
private Long id;
@ -44,13 +45,13 @@ private static final long serialVersionUID = 1L;
private Date modifyTime;
//谁结算的
private String userName;
//操作 + ,-
//操作 + , -
private String operate;
//金额
private BigDecimal amount;
//特点
private String features;
//apply_for_approval:同意审批agree_approval: 同意审批 ,reject_approval拒绝审批
//apply_for_approval:申请审批agree_approval: 同意审批 ,reject_approval拒绝审批
private String status;
//剩下金额
private BigDecimal remainAmount;
@ -58,6 +59,8 @@ private static final long serialVersionUID = 1L;
private Long createTimestamp;
//修改时间
private Long modifyTimestamp;
//common,公款
private String type;
/**
*
* @return
@ -179,14 +182,14 @@ private static final long serialVersionUID = 1L;
}
/**
* apply_for_approval:同意审批agree_approval: 同意审批 ,reject_approval拒绝审批
* apply_for_approval:申请审批agree_approval: 同意审批 ,reject_approval拒绝审批
* @return
*/
public String getStatus() {
return status;
}
/**
* apply_for_approval:同意审批agree_approval: 同意审批 ,reject_approval拒绝审批
* apply_for_approval:申请审批agree_approval: 同意审批 ,reject_approval拒绝审批
* @param status
*/
public void setStatus(String status) {
@ -238,6 +241,21 @@ private static final long serialVersionUID = 1L;
this.modifyTimestamp = modifyTimestamp;
}
/**
* common,公款
* @return
*/
public String getType() {
return type;
}
/**
* common,公款
* @param type
*/
public void setType(String type) {
this.type = type;
}
@Override
public String toString() {
return "VvMySettlementEntity{" +
@ -253,6 +271,7 @@ private static final long serialVersionUID = 1L;
",remainAmount=" + remainAmount +
",createTimestamp=" + createTimestamp +
",modifyTimestamp=" + modifyTimestamp +
",type=" + type +
"}";
}
}

View File

@ -0,0 +1,35 @@
package com.heyu.api.data.enums;
public enum AccountOperateEnums {
plus("+", ""),
sub("-", "");
AccountOperateEnums(String sign, String desc) {
this.sign = sign;
this.desc = desc;
}
private String sign;
private String desc;
public String getSign() {
return sign;
}
public void setSign(String sign) {
this.sign = sign;
}
public String getDesc() {
return desc;
}
public void setDesc(String desc) {
this.desc = desc;
}
}

View File

@ -0,0 +1,33 @@
package com.heyu.api.data.enums;
public enum AccountTypeEnums {
common("common","公款"),
;
private String type;
private String desc;
AccountTypeEnums(String type, String desc) {
this.type = type;
this.desc = desc;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public String getDesc() {
return desc;
}
public void setDesc(String desc) {
this.desc = desc;
}
}

View File

@ -0,0 +1,68 @@
package com.heyu.api.data.service.impl.vv;
/**
* <p>
* 结算 服务类
* </p>
*
* @author quyixiao
* @since 2025-11-10
*/
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.heyu.api.data.dao.vv.VvMyAccountDao;
import com.heyu.api.data.entity.vv.VvMyAccountEntity;
import com.heyu.api.data.service.vv.VvMyAccountService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service
public class VvMyAccountServiceImpl extends ServiceImpl<VvMyAccountDao, VvMyAccountEntity> implements VvMyAccountService {
@Autowired
private VvMyAccountDao vvMyAccountDao;
@Override
public VvMyAccountEntity selectVvMyAccountById(Long id){
return vvMyAccountDao.selectVvMyAccountById(id);
}
@Override
public Long insertVvMyAccount(VvMyAccountEntity vvMyAccount){
return vvMyAccountDao.insertVvMyAccount(vvMyAccount);
}
@Override
public Long insertOrUpdateVvMyAccount(VvMyAccountEntity vvMyAccount){
return vvMyAccountDao.insertOrUpdateVvMyAccount(vvMyAccount);
}
@Override
public int updateVvMyAccountById(VvMyAccountEntity vvMyAccount){
return vvMyAccountDao.updateVvMyAccountById(vvMyAccount);
}
@Override
public int updateCoverVvMyAccountById(VvMyAccountEntity vvMyAccount){
return vvMyAccountDao.updateCoverVvMyAccountById(vvMyAccount);
}
@Override
public int deleteVvMyAccountById(Long id){
return vvMyAccountDao.deleteVvMyAccountById(id);
}
}

View File

@ -0,0 +1,34 @@
package com.heyu.api.data.service.vv;
/**
* <p>
* 结算 服务类
* </p>
*
* @author quyixiao
* @since 2025-11-10
*/
import com.baomidou.mybatisplus.extension.service.IService;
import com.heyu.api.data.entity.vv.VvMyAccountEntity;
public interface VvMyAccountService extends IService<VvMyAccountEntity> {
VvMyAccountEntity selectVvMyAccountById(Long id);
Long insertVvMyAccount(VvMyAccountEntity vvMyAccount);
Long insertOrUpdateVvMyAccount(VvMyAccountEntity vvMyAccount);
int updateVvMyAccountById(VvMyAccountEntity vvMyAccount);
int updateCoverVvMyAccountById(VvMyAccountEntity vvMyAccount);
int deleteVvMyAccountById(Long id);
}

View File

@ -0,0 +1,70 @@
package com.heyu.api.data.utils;
import com.dingtalk.api.DefaultDingTalkClient;
import com.dingtalk.api.DingTalkClient;
import com.dingtalk.api.request.OapiRobotSendRequest;
import com.dingtalk.api.response.OapiRobotSendResponse;
import com.lz.mybatis.plugins.interceptor.entity.DingTalkDto;
import lombok.extern.slf4j.Slf4j;
import java.util.Arrays;
/***
* https://oapi.dingtalk.com/robot/send?access_token=4e9917f5f782cec0bf139ac867b95c64b9c8bcd71266f334905f5196d9828314
*/
@Slf4j
public class DingDingSettlementUtils {
// 财务小助手
protected static String dingTalkUrlPre = "https://oapi.dingtalk.com/robot/send?access_token=";
protected static String token = "4c36a91c1dbd4b3c2827cd8cd63f2342d2da7c6d7ebc5f62cf06197034b12bec";
public static void sendText(String text,String title) {
try {
String content = text + "\n";
content = "【财务小助手】:"
+ "\n" + content;
DingTalkDto dingTalk = new DingTalkDto();
dingTalk.setToken("");
dingTalk.setText(content);
dingTalk.setTitle(title);
dingTalk.setMsgType("text");
process(dingTalk,token);
} catch (Exception e) {
log.error("DingDingUtils",e);
}
}
private static OapiRobotSendResponse process(DingTalkDto dingTalk, String token ) throws Exception {
DingTalkClient client = new DefaultDingTalkClient(dingTalkUrlPre + token);
OapiRobotSendRequest request = new OapiRobotSendRequest();
request.setMsgtype("text");
OapiRobotSendRequest.Text text = new OapiRobotSendRequest.Text();
text.setContent(dingTalk.getText());
request.setText(text);
// @人的手机号(在text内容里要有@手机号)
OapiRobotSendRequest.At at = new OapiRobotSendRequest.At();
String[] mobiles = "18458195149".split(",");
if(StringUtils.isNotBlank(dingTalk.getAtMobiles())){
mobiles = dingTalk.getAtMobiles().split(",");
}
at.setAtMobiles(Arrays.asList(mobiles));
request.setAt(at);
OapiRobotSendResponse response = client.execute(request);
return response;
}
public static void main(String[] args) {
sendText("xx","cc");
}
}

View File

@ -0,0 +1,6 @@
<?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.heyu.api.data.dao.vv.VvMyAccountDao">
</mapper>

View File

@ -94,8 +94,7 @@ public class MysqlMain_insert {
List<TablesBean> list = new ArrayList<TablesBean>();
list.add(new TablesBean("vv_my_settlement"));
list.add(new TablesBean("vv_my_account"));
List<TablesBean> list2 = new ArrayList<TablesBean>();

View File

@ -49,6 +49,7 @@ public class MysqlMain_update {
List<TablesBean> list = new ArrayList<TablesBean>();
list.add(new TablesBean("vv_my_settlement"));
list.add(new TablesBean("vv_my_account"));
//list.add(new TablesBean("vv_trade_order"));

View File

@ -0,0 +1,24 @@
package com.heyu.api.alibaba.request.mm.order;
import com.heyu.api.alibaba.request.mm.AdminBaseDTO;
import lombok.Data;
@Data
public class VVMySettlementApprovalRequest extends AdminBaseDTO {
// 结算状态
// 'apply_for_approval:同意审批agree_approval: 同意审批 ,reject_approval拒绝审批 '
private String status;
/***
* id
*/
private Long id;
}

View File

@ -0,0 +1,19 @@
package com.heyu.api.alibaba.request.mm.order.resp;
import com.heyu.api.data.entity.vv.VvMyAccountEntity;
import com.heyu.api.utils.PPageUtils;
import lombok.Data;
@Data
public class MyAccountDTO {
/***
* 账户
*/
private VvMyAccountEntity vvMyAccountEntity;
/***
* 账户信息
*/
private PPageUtils pageUtils;
}

View File

@ -2,10 +2,17 @@ package com.heyu.api.controller.mm;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.heyu.api.alibaba.request.mm.order.VVMySettlementApprovalRequest;
import com.heyu.api.alibaba.request.mm.order.VVMySettlementRequest;
import com.heyu.api.alibaba.request.mm.order.resp.MyAccountDTO;
import com.heyu.api.data.dao.vv.VvMyAccountDao;
import com.heyu.api.data.dao.vv.VvMySettlementDao;
import com.heyu.api.data.entity.vv.VvMyAccountEntity;
import com.heyu.api.data.entity.vv.VvMySettlementEntity;
import com.heyu.api.data.enums.AccountOperateEnums;
import com.heyu.api.data.enums.AccountTypeEnums;
import com.heyu.api.data.utils.BigDecimalUtil;
import com.heyu.api.data.utils.DingDingSettlementUtils;
import com.heyu.api.data.utils.R;
import com.heyu.api.utils.ISelect;
import com.heyu.api.utils.PPageUtils;
@ -18,19 +25,24 @@ import org.springframework.web.bind.annotation.RestController;
import java.math.BigDecimal;
import java.util.List;
// https://oapi.dingtalk.com/robot/send?access_token=4c36a91c1dbd4b3c2827cd8cd63f2342d2da7c6d7ebc5f62cf06197034b12bec
@Slf4j
@RestController
@RequestMapping("/mm/my/")
@RequestMapping("/mm/my/settlement")
public class AdminMySettlementController {
@Autowired
private VvMySettlementDao vvMySettlementDao;
@Autowired
private VvMyAccountDao vvMyAccountDao;
/***
* 列表
*/
@RequestMapping("/list")
public R list(@RequestBody VVMySettlementRequest vvMySettlementRequest) {
VvMyAccountEntity vvMyAccountEntity = vvMyAccountDao.selectVvMyAccount(AccountTypeEnums.common.getType());
PPageUtils pageUtils = PPageUtils.startPage(vvMySettlementRequest.getPageNum(), vvMySettlementRequest.getPageSize())
.doSelect(new ISelect() {
@Override
@ -45,25 +57,49 @@ public class AdminMySettlementController {
);
}
});
return R.ok().setData(pageUtils);
MyAccountDTO myAccountDTO = new MyAccountDTO();
myAccountDTO.setVvMyAccountEntity(vvMyAccountEntity);
myAccountDTO.setPageUtils(pageUtils);
return R.ok().setData(myAccountDTO);
}
/***
* 插入数据
*/
@RequestMapping("/insertOrUpdate")
public R insertOrUpdate(@RequestBody VvMySettlementEntity vvMySettlementEntity) {
VvMySettlementEntity vvMySettlement = vvMySettlementDao.selectVvMySettlementOrderByIdDescLimit1();
@RequestMapping("/add")
public R add(@RequestBody VvMySettlementEntity vvMySettlementEntity) {
vvMySettlementDao.insertOrUpdateVvMySettlement(vvMySettlementEntity);
if (AccountOperateEnums.plus.getSign().equals(vvMySettlementEntity.getOperate())) {
VvMyAccountEntity vvMyAccountEntity = vvMyAccountDao.selectVvMyAccount(AccountTypeEnums.common.getType());
vvMyAccountEntity.setAmount(vvMySettlementEntity.getAmount().add(vvMyAccountEntity.getAmount()));
vvMyAccountEntity.setRechargeAmount(vvMySettlementEntity.getAmount().add(vvMyAccountEntity.getRechargeAmount()));
vvMyAccountDao.updateVvMyAccountById(vvMyAccountEntity);
} else {
String content = vvMySettlementEntity.getUserName() + ",提交了报销单,报销金额:" + vvMySettlementEntity.getAmount();
DingDingSettlementUtils.sendText(content, "报销申请");
}
return R.ok().setData(vvMySettlementEntity);
}
/***
* 审批
*/
@RequestMapping("/approval")
public R approval(@RequestBody VVMySettlementApprovalRequest vvMySettlementApprovalRequest) {
VvMySettlementEntity vvMySettlement = vvMySettlementDao.selectVvMySettlementById(vvMySettlementApprovalRequest.getId());
BigDecimal remainAmount = vvMySettlement.getRemainAmount();
BigDecimal lastRemainAmount = BigDecimalUtil.subtract(remainAmount, vvMySettlement.getRemainAmount());
vvMySettlementEntity.setRemainAmount(lastRemainAmount);
vvMySettlement.setRemainAmount(lastRemainAmount);
vvMySettlement.setStatus(vvMySettlementApprovalRequest.getStatus());
vvMySettlementDao.insertOrUpdateVvMySettlement(vvMySettlement);
return R.ok().setData(vvMySettlementEntity);
return R.ok().setData(vvMySettlement);
}
}