Commit 5b4e0ae2 by huluobin

update

parent fa65a248
......@@ -216,7 +216,7 @@ public class CostCheckController {
// 将状态改为审核通过、已付款
logger.warn("费用系统出纳回调" + IpUtil.getIpAddr(request) + " CashierCallbackUrl ");
String line = null;
String line;
try {
BufferedReader br = new BufferedReader(new InputStreamReader(request.getInputStream()));
line = br.readLine();
......@@ -330,8 +330,8 @@ public class CostCheckController {
costDomain.setId(oldCost.getId());
if (null != oldDetailKey && oldDetailKey.contains("-")) {
String[] split = oldDetailKey.split("-");
if (null != split && split.length > 1) {
Integer i = Integer.parseInt(split[1]) + 1;
if (split.length > 1) {
int i = Integer.parseInt(split[1]) + 1;
costDomain.setDetailKey(split[0] + "-" + i);
}
} else {
......
......@@ -52,6 +52,7 @@ public class CostListController {
@Autowired
private UserService userService;
@ApiOperation("获取前端要打印的费用单列表")
@PostMapping("/print/list")
public Map<String, Object> printList(HttpServletResponse response, HttpServletRequest request) {
AxiosUtil.setCors(response, request);
......
......@@ -37,9 +37,9 @@ public class CostTemplateBaseColController {
@ApiOperation("新增费用单基础字段")
@PostMapping("/add")
public CostResult<Void> add(@RequestBody CostTemplateBaseColApiReq.AddReq req) {
costTemplateBaseColService.add(req);
return CostResult.success();
public CostResult<CostTemplateBaseCol> add(@RequestBody CostTemplateBaseColApiReq.AddReq req) {
CostTemplateBaseCol costTemplateBaseCol = costTemplateBaseColService.add(req);
return CostResult.success(costTemplateBaseCol);
}
@ApiOperation("更新费用单基础字段")
......
......@@ -35,7 +35,7 @@ public class CostTemplateColController {
return CostResult.success();
}
@ApiOperation("/新增费用单模版字段")
@ApiOperation("/更新费用单模版字段")
@PostMapping("/modify")
public CostResult<Void> modify(@RequestBody CostTemplateCol costTemplateCol) {
costTemplateColService.modify(costTemplateCol);
......
package com.blt.other.module.cost.dto;
/**
* <p>
*
* </p>
*
* @author robbendev
* @since 2020/10/27 2:58 下午
*/
public class CostListApiDto {
}
......@@ -56,6 +56,7 @@ public class CostTemplateCol implements Serializable {
private String createUserName;
private Integer updateUserId;
private String updateUserName;
@ApiModelProperty(value = "更新时间")
......
......@@ -34,7 +34,7 @@ public interface ICostTemplateBaseColService extends IService<CostTemplateBaseCo
*
* @param req req
*/
void add(CostTemplateBaseColApiReq.AddReq req);
CostTemplateBaseCol add(CostTemplateBaseColApiReq.AddReq req);
/**
* <p>
......
......@@ -89,14 +89,6 @@ public abstract class AbstractCostPlanService implements CostPlanService {
costPlanDomain.setPayCur(costPlanDomain.getCur());
// /*附件字段*/
// if (costPlanDomain.getFileSelect() != null) {
// // 文件上传的路径
// String filePath = PathUtil.getBasePath() + PathUtil.getPath("cost/" + costPlanDomain.getCostPlanNo() + "/");
// // 调用工具类执行保存,并返回 path
// String path = CostFileUtil.upload(costPlanDomain.getFileSelect(), filePath);
// costPlanDomain.setFilePath(path);
// }
}
......
......@@ -30,6 +30,13 @@ public class CostPlanNewLend1ServiceImpl extends AbstractCostPlanService impleme
planDomain.setCostPlanStatus(0);
planDomain.setLendStatus(1);
//init 借支单已还金额
planDomain.setHadPay(BigDecimal.ZERO);
//init 冲销金额
planDomain.setCounteract(BigDecimal.ZERO);
//init 借还单余额
planDomain.setLendBalance(BigDecimal.ZERO);
CostTypeKindDomain costTypeKindDomain = costTypeKindDao.selectByKindNo(planDomain.getKindNo());
planDomain.setKindName(costTypeKindDomain.getKindName());
......
......@@ -32,6 +32,10 @@ public class CostPlanNewLend2ServiceImpl extends AbstractCostPlanService impleme
this.doSaveFinansyRecord(planDomain);
this.completedCostPlan(planDomain);
planDomain.setCostPlanStatus(0);
if (null == planDomain.getIsTax()) {
planDomain.setIsTax(0);
}
CostTypeKindDomain costTypeKindDomain = costTypeKindDao.selectByKindNo(planDomain.getKindNo());
planDomain.setKindName(costTypeKindDomain.getKindName());
......@@ -66,28 +70,22 @@ public class CostPlanNewLend2ServiceImpl extends AbstractCostPlanService impleme
costPlanDao.update(costPlanDomain);
// 借还单确认时,根据借支单金额、冲销金额、余额拆单
if (null == costPlanDomain.getIsTax()) {
costPlanDomain.setIsTax(0);
}
//关联的借支单
CostDomain supCost = costDao.selectByCostNo(costPlanDomain.getSupCostNo());
// 关联借支单还需还差额 subtract
if (null == supCost.getHadPay()) {
supCost.setHadPay(new BigDecimal(0));
}
if (null == supCost.getCounteract()) {
supCost.setCounteract(new BigDecimal(0));
}
if (null == supCost.getLendBalance()) {
supCost.setLendBalance(new BigDecimal(0));
}
//借支单金额 - 借支单已还金额
BigDecimal subtract = supCost.getAmount().subtract(supCost.getHadPay());
//借还单冲销金额
BigDecimal counteract = costPlanDomain.getCounteract();
//借还单余额
BigDecimal lendBalance = costPlanDomain.getLendBalance();
BigDecimal numZero = new BigDecimal(0);
int result = 0;
if (counteract.compareTo(numZero) == 0 && lendBalance.compareTo(numZero) == 1) {
// 1、冲销 0,还 大于0 ==== 生成一张收款的借还单
// 1、冲销金额等于 0,借还单余额大于0 : 生成一张收款的借还单。
if (counteract.compareTo(BigDecimal.ZERO) == 0 && lendBalance.compareTo(BigDecimal.ZERO) > 0) {
CostDomain costDomain = planToCost(costPlanDomain.getCostPlanNo());
costDomain.setCostNo(getCostNo());
costDomain.setCostStatus(0);
......@@ -95,18 +93,19 @@ public class CostPlanNewLend2ServiceImpl extends AbstractCostPlanService impleme
BigDecimal toRmbRate = CurUtils.getCur(costDomain.getDic(), "CNY", getExchangeRateApi);
costDomain.setToRmbRate(toRmbRate);
costDomain.setAmountRmb(costDomain.getAmount().multiply(toRmbRate).setScale(2, BigDecimal.ROUND_HALF_UP));
Integer insert = costDao.insert(costDomain);
if (null != insert && insert == 1) {
log.info("1、冲销 0,还 大于0 ==== 生成一张收款的借还单: " + costDomain);
// 记录日志
costLogService.save(costDomain.getCostNo(), costDomain.getCreateUserid(), "由费用计划:" + costDomain.getCostPlanNo() + " 生成收款借还单");
result = 1;
} else {
log.error("1、冲销 0,还 大于0 ==== 生成一张收款的借还单失败: " + costDomain);
}
} else if (counteract.compareTo(numZero) == 1 && lendBalance.compareTo(numZero) == 0) {
// 2、冲销 大于 0,还 0
if (counteract.compareTo(subtract) == 0 || counteract.compareTo(subtract) == -1) {
costDao.insert(costDomain);
log.info("1、冲销 0,还 大于0 ==== 生成一张收款的借还单: " + costDomain);
// 记录日志
costLogService.save(costDomain.getCostNo(),
costDomain.getCreateUserid(),
"由费用计划:" + costDomain.getCostPlanNo() + " 生成收款借还单");
result = result + 1;
}
// 2、冲销金额大于 0,借还单余额大于0
else if (counteract.compareTo(BigDecimal.ZERO) > 0 && lendBalance.compareTo(BigDecimal.ZERO) == 0) {
if (counteract.compareTo(subtract) == 0 || counteract.compareTo(subtract) < 0) {
// 2.1、冲销刚好抵消差额 / 冲销小于差额 ===== 生成一张无需付款的借还单
CostDomain costDomain = planToCost(costPlanDomain.getCostPlanNo());
costDomain.setCostNo(getCostNo());
......@@ -197,7 +196,7 @@ public class CostPlanNewLend2ServiceImpl extends AbstractCostPlanService impleme
log.info("生成一张补差额的付款单失败:" + costDomain1);
}
}
} else if (counteract.compareTo(numZero) == 1 && lendBalance.compareTo(numZero) == 1) {
} else if (counteract.compareTo(BigDecimal.ZERO) > 0 && lendBalance.compareTo(BigDecimal.ZERO) > 0) {
// 3、冲销 大于 0,还 大于0 生成一张无需付款的借还单,一张收款的借还单
log.info("3、冲销 大于 0,还 大于0 ,准备生成一张无需付款的借还单,一张收款的借还单");
CostDomain costDomain1 = planToCost(costPlanDomain.getCostPlanNo());
......
......@@ -32,13 +32,14 @@ public class CostTemplateBaseColServiceImpl extends ServiceImpl<CostTemplateBase
}
@Override
public void add(CostTemplateBaseColApiReq.AddReq req) {
public CostTemplateBaseCol add(CostTemplateBaseColApiReq.AddReq req) {
if (!req.getIsExtension()) {
throw new RuntimeException("只能添加扩展字段");
}
CostTemplateBaseCol costTemplateBaseCol = new CostTemplateBaseCol();
BeanUtils.copyProperties(req, costTemplateBaseCol);
this.save(costTemplateBaseCol);
return costTemplateBaseCol;
}
@Override
......
package com.blt.other.module.cost.vo;
import lombok.Data;
import java.util.List;
/**
* 批量打印费用单
* {"printNos":["F000049","F000048","F000047","F000044"]}
*/
@Data
public class CostListPrintVo {
private List<String> printNos;
public List<String> getPrintNos() {
return printNos;
}
public void setPrintNos(List<String> printNos) {
this.printNos = printNos;
}
@Override
public String toString() {
return "CostListPrintVo{" +
"printNos=" + printNos +
'}';
}
}
......@@ -9,6 +9,7 @@ import com.baomidou.mybatisplus.annotation.TableName;
import com.blt.other.common.util.CurUtils;
import com.blt.other.module.database.mapper.StatusMapper;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
......@@ -29,124 +30,188 @@ public class CostDomain {
@TableId(type = IdType.AUTO)
private Integer id;
// 费用单编号
@ApiModelProperty("费用单编号")
private String costNo;
// 费用计划编号
@ApiModelProperty("费用计划编号")
private String costPlanNo;
// 主体编号
@ApiModelProperty("主体编号")
private String companyNo;
// 主体名称
@ApiModelProperty("主体名称")
private String companyName;
// 类型编号
@ApiModelProperty("类型编号")
private String typeNo;
// 类型标题
@ApiModelProperty("类型标题")
private String typeName;
// 科目编号
@ApiModelProperty("科目编号")
private String subjectCode;
// 小类编号
@ApiModelProperty("小类编号")
private String kindNo;
// 小类标题
@ApiModelProperty("小类标题")
private String kindName;
// 创建人 id
@ApiModelProperty("创建人id")
private Integer createUserid;
// 创建人编号
@ApiModelProperty("创建人编号")
private String createUsercode;
// 创建人名称
@ApiModelProperty("创建人名称")
private String createUsername;
// 费用单备注
@ApiModelProperty("费用单备注")
private String costRemark;
@ApiModelProperty("创建时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
// 创建时间
private Date createTime;
// 关联子单
@ApiModelProperty("关联子单")
@Deprecated
private String sonCostNo;
// 关联父单
@ApiModelProperty("关联父单")
private String supCostNo;
// 费用单状态 0 未提交 1待审核 2待出纳付款 3已支付
//
@ApiModelProperty("费用单状态 0 未提交 1待审核 2待出纳付款 3已支付")
private Integer costStatus;
// 文件地址
@ApiModelProperty("文件地址")
private String filePath;
// 补充材料地址
@ApiModelProperty("补充材料地址")
private String morFilePath;
// 费用总金额
@ApiModelProperty("费用总金额")
private BigDecimal amount;
// 二级物流供应商ID
@ApiModelProperty("二级物流供应商ID")
private Integer subLogisticsSupplierId;
// 一级物流供应商ID
@ApiModelProperty("一级物流供应商ID")
private Integer logisticsSupplierId;
// 收款银行(平台)
@ApiModelProperty("收款银行(平台)")
private String bankName;
// 收款账户
@ApiModelProperty("收款账户")
private String bankCard;
// 收款用户名
@ApiModelProperty("收款用户名")
private String bankCardUser;
// 收款/付款单位
@ApiModelProperty("收款/付款单位")
private String bankCompany;
// 补充信息
@ApiModelProperty("补充信息")
private String morRemark;
// 1 付款费用 2 收款费用 3 借支/借还
@ApiModelProperty("1 付款费用 2 收款费用 3 借支/借还")
private Integer costForm;
// 付款理由
@ApiModelProperty("付款理由")
private String costReason;
// 1 借支 2 借还
@ApiModelProperty("1 借支 2 借还")
private Integer isLend;
// 借支单已还金额
@ApiModelProperty("借支单已还金额")
private BigDecimal hadPay;
// 借支单状态 1 未还 2 部分还款 3 结清
@ApiModelProperty("借支单状态 1 未还 2 部分还款 3 结清")
private Integer lendStatus;
// 借支单补偿金额
@ApiModelProperty("借支单补偿金额")
private BigDecimal compensate;
// 冲销金额
@ApiModelProperty("冲销金额")
private BigDecimal counteract;
// 借还单余额
@ApiModelProperty("借还单余额")
private BigDecimal lendBalance;
// 驳回原因
@ApiModelProperty("驳回原因")
private String rejectReason;
// 币种
@ApiModelProperty("币种")
private String dic;
// 借还单冲销金额 ( 支付币种 )
@ApiModelProperty("借还单冲销金额 ( 支付币种 )")
private BigDecimal payCounteract;
// 借还单余额 ( 支付币种 )
@ApiModelProperty("借还单余额 ( 支付币种 )")
private BigDecimal payLendBalance;
// 计划金额 ( 支付币种 )
@ApiModelProperty("计划金额 ( 支付币种 )")
private BigDecimal payPlanAmount;
// 支付币种
@ApiModelProperty("支付币种")
private String payDic;
// 汇率
@ApiModelProperty("汇率")
private BigDecimal payCur;
// 0 不抵扣个税 1 抵扣个税
@ApiModelProperty("0 不抵扣个税 1 抵扣个税")
private Integer isTax;
// 出纳系统 detailKey
@ApiModelProperty("出纳系统 detailKey")
private String detailKey;
// 支付者用户ID
@ApiModelProperty("支付者用户ID")
private Integer payUserId;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
// 支付时间
@ApiModelProperty("支付时间")
private Date payTime;
// 转人民币汇率
@ApiModelProperty("转人民币汇率")
private BigDecimal toRmbRate;
// 费用单人民币总金额
@ApiModelProperty("费用单人民币总金额")
private BigDecimal amountRmb;
// 公司主体value
@ApiModelProperty("公司主体value")
private Integer companyValue;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
// 财务审核时间
@ApiModelProperty("财务审核时间")
private Date auditTime;
//发票状态
@ApiModelProperty("费用单发票状态编号")
private Integer hasInvoice;
//驳回类型
@ApiModelProperty("驳回类型")
private Integer rejectType;
//财务驳回时间
@ApiModelProperty("财务驳回时间")
private Date rejectTime;
@ApiModelProperty("")
private String cashierFilePath;
@ApiModelProperty("")
private String cashierDownloadPath;
//费用来源 1-默认 2-WMS 3-调拨系统
//
@ApiModelProperty("费用来源 1-默认 2-WMS 3-调拨系统")
private String sourceFrom;
//项目
@ApiModelProperty("项目")
private String projectType;
//客户编号
@ApiModelProperty("客户编号")
private String customerNum;
......
......@@ -9,6 +9,7 @@ import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;
import com.blt.other.module.database.mapper.StatusMapper;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.beans.BeanUtils;
......@@ -21,72 +22,120 @@ import java.util.List;
public class CostPlanDomain {
@TableId(type = IdType.AUTO)
private Integer id; // 费用单表 id
@ApiModelProperty("费用计划编号")
private String costPlanNo; // 费用计划编号
@ApiModelProperty("主体编号")
private String companyNo; // 主体编号
@ApiModelProperty("主体名称")
private String companyName; // 主体名称
@ApiModelProperty("类型编号")
private String typeNo; // 类型编号
@ApiModelProperty("类型标题")
private String typeName; // 类型标题
@ApiModelProperty("种类编号")
private String kindNo; // 种类编号
@ApiModelProperty("费用计划编号")
private String kindName; // 种类标题
@ApiModelProperty("创建人id")
private Integer createUserid; // 创建人 id
@ApiModelProperty("创建人编号")
private String createUsercode; // 创建人编号
@ApiModelProperty("创建人名称")
private String createUsername; // 创建人名称
@ApiModelProperty("付款理由")
private String costReason; // 付款理由
@ApiModelProperty("费用单备注")
private String costRemark; // 费用单备注
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
@ApiModelProperty("创建时间")
private Date createTime; // 创建时间
@ApiModelProperty("关联子单")
@Deprecated
private String sonCostNo; // 关联子单
@ApiModelProperty("关联父单")
private String supCostNo; // 关联父单
@ApiModelProperty("费用计划状态 0 待确认 1 已确认")
private Integer costPlanStatus; // 费用计划状态 0 待确认 1 已确认
@ApiModelProperty("文件地址")
private String filePath; // 文件地址
@ApiModelProperty("补充材料地址")
private String morFilePath; // 补充材料地址
@ApiModelProperty("费用总金额")
private BigDecimal planAmount; // 费用总金额
@ApiModelProperty("二级物流供应商ID")
private Integer subLogisticsSupplierId; // 二级物流供应商ID
@ApiModelProperty("一级物流供应商ID")
private Integer logisticsSupplierId; // 一级物流供应商ID
@ApiModelProperty("收款银行(平台)")
private String bankName; // 收款银行(平台)
@ApiModelProperty("收款账户")
private String bankCard; // 收款账户
@ApiModelProperty("收款用户名")
private String bankCardUser; // 收款用户名
@ApiModelProperty("收款/付款单位")
private String bankCompany; // 收款/付款单位
@ApiModelProperty("补充信息")
private String morRemark; // 补充信息
@ApiModelProperty("1 付款费用 2 收款费用 3 借支/借还")
private Integer costForm; // 1 付款费用 2 收款费用 3 借支/借还
@ApiModelProperty("1 借支 2 借还")
private Integer isLend; // 1 借支 2 借还
@ApiModelProperty("借支单已还金额")
private BigDecimal hadPay; // 借支单已还金额
@ApiModelProperty("借支单状态 1 未还 2 部分还款 3 结清")
private Integer lendStatus; // 借支单状态 1 未还 2 部分还款 3 结清
@ApiModelProperty("借支单补偿金额")
private BigDecimal compensate; // 借支单补偿金额
@ApiModelProperty("冲销金额")
private BigDecimal counteract; // 冲销金额
@ApiModelProperty("借还单余额")
private BigDecimal lendBalance; // 借还单余额
@ApiModelProperty("驳回原因")
private String rejectReason; // 驳回原因
@ApiModelProperty("币种")
private String dic; // 币种
@ApiModelProperty("借还单冲销金额 ( 支付币种 )")
private BigDecimal payCounteract; // 借还单冲销金额 ( 支付币种 )
@ApiModelProperty("借还单余额 ( 支付币种 )")
private BigDecimal payLendBalance; // 借还单余额 ( 支付币种 )
@ApiModelProperty("计划金额 ( 支付币种 )")
private BigDecimal payPlanAmount; // 计划金额 ( 支付币种 )
@ApiModelProperty("支付币种")
private String payDic; // 支付币种
@ApiModelProperty("汇率")
private BigDecimal payCur; // 汇率
@TableField(exist = false)
@ApiModelProperty("费用计划编汇率号")
private BigDecimal cur; // 汇率
@ApiModelProperty("0 不抵扣个税 1 抵扣个税")
private Integer isTax; // 0 不抵扣个税 1 抵扣个税
@ApiModelProperty("公司主体value")
private Integer companyValue; // 公司主体value
@TableField(typeHandler = JacksonTypeHandler.class)
@ApiModelProperty("附加字段")
private List<CostAttach> attach;
@TableField(exist = false)
@ApiModelProperty("费用模版id")
private String costTemplateId;
public CostPlanDto castToDto() {
......@@ -104,53 +153,4 @@ public class CostPlanDomain {
}
return costPlanDto;
}
/**
* <p>
* 是否收款单计划
* </p>
*
* @return bol
*/
public Boolean isReceiptCostPlan() {
return true;
}
/**
* <p>
* 是否借支单计划
* </p>
*
* @return bol
*/
public Boolean isLend1CostPlan() {
return true;
}
/**
* <p>
* 是否借还单计划
* </p>
*
* @return bol
*/
public Boolean isLend2CostPlan() {
return true;
}
/**
* <p>
* 是否付款单计划
* </p>
*
* @return bol
*/
public Boolean isPayCostPlan() {
return true;
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment