1.1.8 合同回款页面查询接口、项目计划回款阶段列表、项目计划阶段回款确认

dev
yinq 1 month ago
parent 1e7199dc5e
commit c1d17f44b5

@ -17,8 +17,12 @@ import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import org.dromara.common.log.enums.BusinessType;
import org.dromara.common.excel.utils.ExcelUtil;
import org.dromara.oa.erp.domain.vo.ContractCollectionPageVo;
import org.dromara.oa.erp.domain.vo.ContractCollectionStageDetailVo;
import org.dromara.oa.erp.domain.vo.ErpProjectPlanVo;
import org.dromara.oa.erp.domain.bo.ErpProjectPlanBo;
import org.dromara.oa.erp.domain.bo.ErpProjectPlanStageBo;
import org.dromara.oa.erp.domain.vo.ErpProjectPlanStageVo;
import org.dromara.oa.erp.service.IErpProjectPlanService;
import org.dromara.common.mybatis.core.page.TableDataInfo;
@ -127,4 +131,36 @@ public class ErpProjectPlanController extends BaseController {
return R.ok(erpProjectPlanService.projectPlanSubmitAndFlowStart(bo));
}
/**
*
*/
@GetMapping("/collectionStageList/{projectPlanId}")
public R<List<ErpProjectPlanStageVo>> collectionStageList(@PathVariable("projectPlanId") Long projectPlanId) {
return R.ok(erpProjectPlanService.queryCollectionStageList(projectPlanId));
}
/**
*
*/
@PostMapping("/confirmCollectionStage")
public R<Void> confirmCollectionStage(@Validated(EditGroup.class) @RequestBody ErpProjectPlanStageBo bo) {
return toAjax(erpProjectPlanService.confirmCollectionStage(bo));
}
/**
* + +
*/
@GetMapping("/contractCollectionPage")
public TableDataInfo<ContractCollectionPageVo> contractCollectionPage(ErpProjectPlanBo bo, PageQuery pageQuery) {
return erpProjectPlanService.queryContractCollectionPage(bo, pageQuery);
}
/**
*
*/
@GetMapping("/contractCollectionStageDetail/{projectPlanId}")
public R<List<ContractCollectionStageDetailVo>> contractCollectionStageDetail(@PathVariable("projectPlanId") Long projectPlanId) {
return R.ok(erpProjectPlanService.queryContractCollectionStageDetail(projectPlanId));
}
}

@ -4,6 +4,7 @@ import org.dromara.common.tenant.core.TenantEntity;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.math.BigDecimal;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
@ -119,6 +120,31 @@ public class ErpProjectPlanStage extends TenantEntity {
*/
private String activeFlag;
/**
*
*/
private BigDecimal actualRepaymentAmount;
/**
*
*/
private Long collectionConfirmUserId;
/**
*
*/
private Date collectionConfirmTime;
/**
* 0 1 2
*/
private String collectionConfirmStatus;
/**
*
*/
private String collectionConfirmRemark;
/**
* 0 1
*/

@ -117,6 +117,26 @@ public class ErpProjectPlanBo extends BaseEntity {
*/
private String contractName;
/**
*
*/
private String orderName;
/**
*
*/
private String orderNo;
/**
*
*/
private String contractNo;
/**
*
*/
private String deptName;
/**
*
*/

@ -8,6 +8,7 @@ import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import lombok.EqualsAndHashCode;
import jakarta.validation.constraints.*;
import java.math.BigDecimal;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
@ -118,5 +119,30 @@ public class ErpProjectPlanStageBo extends BaseEntity {
*/
private String activeFlag;
/**
*
*/
private BigDecimal actualRepaymentAmount;
/**
*
*/
private Long collectionConfirmUserId;
/**
*
*/
private Date collectionConfirmTime;
/**
* 0 1 2
*/
private String collectionConfirmStatus;
/**
*
*/
private String collectionConfirmRemark;
}

@ -0,0 +1,61 @@
package org.dromara.oa.erp.domain.vo;
import lombok.Data;
import java.math.BigDecimal;
/**
*
*/
@Data
public class ContractCollectionPageVo {
private Long projectPlanId;
private Long projectId;
private Long contractId;
/**
*
*/
private String orderNo;
/**
*
*/
private String orderName;
/**
*
*/
private String contractNo;
/**
*
*/
private String contractName;
/**
*
*/
private String businessDirection;
/**
*
*/
private String orderType;
/**
*
*/
private String deptName;
/**
*
*/
private BigDecimal amount;
/**
*
*/
private BigDecimal paymentRate;
}

@ -0,0 +1,35 @@
package org.dromara.oa.erp.domain.vo;
import lombok.Data;
import java.math.BigDecimal;
import java.util.Date;
/**
* +
*/
@Data
public class ContractCollectionStageDetailVo {
private Long paymentMethodId;
private Long contractId;
private Long paymentStageId;
private String stageName;
private String collectionStage;
private BigDecimal paymentPercentage;
private BigDecimal paymentAmount;
private BigDecimal paymentDeadline;
private String paymentDescription;
/**
* collectionStage
*/
private Long planStageId;
private Date receivableDate;
private BigDecimal actualRepaymentAmount;
private Long collectionConfirmUserId;
private Date collectionConfirmTime;
private String collectionConfirmStatus;
private String collectionConfirmRemark;
}

@ -1,5 +1,6 @@
package org.dromara.oa.erp.domain.vo;
import java.math.BigDecimal;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.dromara.oa.erp.domain.ErpProjectPlanStage;
@ -147,5 +148,36 @@ public class ErpProjectPlanStageVo implements Serializable {
@ExcelDictFormat(dictType = "active_flag")
private String activeFlag;
/**
*
*/
@ExcelProperty(value = "实际回款金额")
private BigDecimal actualRepaymentAmount;
/**
*
*/
private Long collectionConfirmUserId;
/**
*
*/
private Date collectionConfirmTime;
/**
* 0 1 2
*/
private String collectionConfirmStatus;
/**
*
*/
private String collectionConfirmRemark;
/**
* true=
*/
private Boolean collectionConfirmed;
}

@ -10,6 +10,8 @@ import org.apache.ibatis.annotations.Param;
import org.dromara.common.mybatis.annotation.DataColumn;
import org.dromara.common.mybatis.annotation.DataPermission;
import org.dromara.oa.erp.domain.ErpProjectPlan;
import org.dromara.oa.erp.domain.bo.ErpProjectPlanBo;
import org.dromara.oa.erp.domain.vo.ContractCollectionPageVo;
import org.dromara.oa.erp.domain.vo.ErpProjectPlanVo;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
@ -131,5 +133,11 @@ public interface ErpProjectPlanMapper extends BaseMapperPlus<ErpProjectPlan, Erp
})
Boolean existsErpProjectPlan(@Param(Constants.WRAPPER) Wrapper<ErpProjectPlan> queryWrapper);
/**
* SQL
*/
Page<ContractCollectionPageVo> selectContractCollectionPage(@Param("page") Page<ContractCollectionPageVo> page,
@Param("bo") ErpProjectPlanBo bo);
}

@ -1,10 +1,14 @@
package org.dromara.oa.erp.service;
import org.dromara.oa.erp.domain.ErpProjectPlan;
import org.dromara.oa.erp.domain.bo.ErpProjectPlanStageBo;
import org.dromara.oa.erp.domain.vo.ContractCollectionPageVo;
import org.dromara.oa.erp.domain.vo.ContractCollectionStageDetailVo;
import org.dromara.oa.erp.domain.vo.ErpProjectPlanVo;
import org.dromara.oa.erp.domain.bo.ErpProjectPlanBo;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.oa.erp.domain.vo.ErpProjectPlanStageVo;
import java.util.Collection;
import java.util.List;
@ -73,4 +77,24 @@ public interface IErpProjectPlanService {
* @return
*/
ErpProjectPlanVo projectPlanSubmitAndFlowStart(ErpProjectPlanBo bo);
/**
*
*/
List<ErpProjectPlanStageVo> queryCollectionStageList(Long projectPlanId);
/**
*
*/
Boolean confirmCollectionStage(ErpProjectPlanStageBo bo);
/**
*
*/
TableDataInfo<ContractCollectionPageVo> queryContractCollectionPage(ErpProjectPlanBo bo, PageQuery pageQuery);
/**
*
*/
List<ContractCollectionStageDetailVo> queryContractCollectionStageDetail(Long projectPlanId);
}

@ -21,11 +21,17 @@ import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.satoken.utils.LoginHelper;
import org.dromara.common.tenant.helper.TenantHelper;
import org.dromara.oa.erp.constant.ProjectCategoryConstant;
import org.dromara.oa.base.domain.BasePaymentStage;
import org.dromara.oa.erp.domain.ErpContractPaymentMethod;
import org.dromara.oa.erp.domain.ErpProjectPlan;
import org.dromara.oa.erp.domain.ErpProjectPlanStage;
import org.dromara.oa.erp.domain.bo.ErpProjectPlanBo;
import org.dromara.oa.erp.domain.bo.ErpProjectPlanStageBo;
import org.dromara.oa.erp.domain.vo.ContractCollectionPageVo;
import org.dromara.oa.erp.domain.vo.ContractCollectionStageDetailVo;
import org.dromara.oa.erp.domain.vo.ErpProjectPlanStageVo;
import org.dromara.oa.erp.domain.vo.ErpProjectPlanVo;
import org.dromara.oa.erp.mapper.ErpContractPaymentMethodMapper;
import org.dromara.oa.erp.mapper.ErpProjectPlanMapper;
import org.dromara.oa.erp.mapper.ErpProjectPlanStageMapper;
import org.dromara.oa.erp.service.IErpProjectPlanService;
@ -37,6 +43,7 @@ import org.springframework.context.event.EventListener;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal;
import java.util.*;
import java.util.stream.Collectors;
@ -56,6 +63,7 @@ public class ErpProjectPlanServiceImpl implements IErpProjectPlanService {
private final ErpProjectPlanMapper baseMapper;
private final ErpProjectPlanStageMapper planStageMapper;
private final ErpContractPaymentMethodMapper contractPaymentMethodMapper;
@DubboReference(timeout = 30000)
private RemoteWorkflowService remoteWorkflowService;
@ -359,6 +367,110 @@ public class ErpProjectPlanServiceImpl implements IErpProjectPlanService {
return MapstructUtils.convert(add, ErpProjectPlanVo.class);
}
@Override
public List<ErpProjectPlanStageVo> queryCollectionStageList(Long projectPlanId) {
MPJLambdaWrapper<ErpProjectPlanStage> lqw = JoinWrappers.lambda(ErpProjectPlanStage.class)
.selectAll(ErpProjectPlanStage.class)
.eq("t.del_flag", "0")
.eq(ErpProjectPlanStage::getProjectPlanId, projectPlanId)
.orderByAsc(ErpProjectPlanStage::getSortOrder);
List<ErpProjectPlanStageVo> list = planStageMapper.selectVoList(lqw);
list.forEach(item -> item.setCollectionConfirmed(!"0".equals(item.getCollectionConfirmStatus())));
return list;
}
@Override
@Transactional(rollbackFor = Exception.class)
public Boolean confirmCollectionStage(ErpProjectPlanStageBo bo) {
ErpProjectPlanStage stage = planStageMapper.selectById(bo.getPlanStageId());
if (stage == null) {
throw new ServiceException("项目计划阶段不存在");
}
stage.setReceivableDate(bo.getReceivableDate());
stage.setActualRepaymentAmount(bo.getActualRepaymentAmount());
stage.setCollectionConfirmRemark(bo.getCollectionConfirmRemark());
stage.setCollectionConfirmUserId(LoginHelper.getUserId());
stage.setCollectionConfirmTime(new Date());
String confirmStatus = bo.getCollectionConfirmStatus();
if (StringUtils.isBlank(confirmStatus)) {
BigDecimal expected = stage.getRepaymentAmount() == null ? BigDecimal.ZERO : BigDecimal.valueOf(stage.getRepaymentAmount());
BigDecimal actual = bo.getActualRepaymentAmount() == null ? BigDecimal.ZERO : bo.getActualRepaymentAmount();
if (actual.compareTo(BigDecimal.ZERO) <= 0) {
confirmStatus = "0";
} else if (expected.compareTo(BigDecimal.ZERO) > 0 && actual.compareTo(expected) >= 0) {
confirmStatus = "2";
} else {
confirmStatus = "1";
}
}
stage.setCollectionConfirmStatus(confirmStatus);
if (bo.getDelayDay() != null) {
stage.setDelayDay(bo.getDelayDay());
}
if (StringUtils.isNotBlank(bo.getReasonsExplanation())) {
stage.setReasonsExplanation(bo.getReasonsExplanation());
}
return planStageMapper.updateById(stage) > 0;
}
@Override
public TableDataInfo<ContractCollectionPageVo> queryContractCollectionPage(ErpProjectPlanBo bo, PageQuery pageQuery) {
Page<ContractCollectionPageVo> result = baseMapper.selectContractCollectionPage(pageQuery.build(), bo);
return TableDataInfo.build(result);
}
@Override
public List<ContractCollectionStageDetailVo> queryContractCollectionStageDetail(Long projectPlanId) {
ErpProjectPlan plan = baseMapper.selectById(projectPlanId);
if (plan == null || plan.getContractId() == null) {
return List.of();
}
MPJLambdaWrapper<ErpContractPaymentMethod> contractStageLqw = JoinWrappers.lambda(ErpContractPaymentMethod.class)
.selectAs(ErpContractPaymentMethod::getPaymentMethodId, ContractCollectionStageDetailVo::getPaymentMethodId)
.selectAs(ErpContractPaymentMethod::getContractId, ContractCollectionStageDetailVo::getContractId)
.selectAs(ErpContractPaymentMethod::getPaymentStageId, ContractCollectionStageDetailVo::getPaymentStageId)
.selectAs(BasePaymentStage::getStageName, ContractCollectionStageDetailVo::getStageName)
.selectAs(BasePaymentStage::getCollectionStage, ContractCollectionStageDetailVo::getCollectionStage)
.selectAs(ErpContractPaymentMethod::getPaymentPercentage, ContractCollectionStageDetailVo::getPaymentPercentage)
.selectAs(ErpContractPaymentMethod::getPaymentAmount, ContractCollectionStageDetailVo::getPaymentAmount)
.selectAs(ErpContractPaymentMethod::getPaymentDeadline, ContractCollectionStageDetailVo::getPaymentDeadline)
.selectAs(ErpContractPaymentMethod::getPaymentDescription, ContractCollectionStageDetailVo::getPaymentDescription)
.leftJoin(BasePaymentStage.class, BasePaymentStage::getPaymentStageId, ErpContractPaymentMethod::getPaymentStageId)
.eq(ErpContractPaymentMethod::getContractId, plan.getContractId())
.eq(ErpContractPaymentMethod::getDelFlag, "0")
.orderByAsc(ErpContractPaymentMethod::getSortOrder);
List<ContractCollectionStageDetailVo> contractStages = contractPaymentMethodMapper.selectJoinList(ContractCollectionStageDetailVo.class, contractStageLqw);
List<ErpProjectPlanStage> planStages = planStageMapper.selectList(
JoinWrappers.lambda(ErpProjectPlanStage.class)
.eq(ErpProjectPlanStage::getProjectPlanId, projectPlanId)
.eq(ErpProjectPlanStage::getDelFlag, "0")
);
Map<String, ErpProjectPlanStage> planStageMap = planStages.stream()
.filter(i -> StringUtils.isNotBlank(i.getCollectionStage()))
.collect(Collectors.toMap(ErpProjectPlanStage::getCollectionStage, i -> i, (a, b) -> a));
contractStages.forEach(item -> {
if (StringUtils.isBlank(item.getCollectionStage())) {
return;
}
ErpProjectPlanStage matched = planStageMap.get(item.getCollectionStage());
if (matched != null) {
item.setPlanStageId(matched.getPlanStageId());
item.setReceivableDate(matched.getReceivableDate());
item.setActualRepaymentAmount(matched.getActualRepaymentAmount());
item.setCollectionConfirmUserId(matched.getCollectionConfirmUserId());
item.setCollectionConfirmTime(matched.getCollectionConfirmTime());
item.setCollectionConfirmStatus(matched.getCollectionConfirmStatus());
item.setCollectionConfirmRemark(matched.getCollectionConfirmRemark());
}
});
return contractStages;
}
/**
* (: 稿退)
*

@ -5,6 +5,8 @@
<mapper namespace="org.dromara.oa.erp.mapper.ErpProjectPlanMapper">
<resultMap type="org.dromara.oa.erp.domain.vo.ErpProjectPlanVo" id="ErpProjectPlanResult">
</resultMap>
<resultMap type="org.dromara.oa.erp.domain.vo.ContractCollectionPageVo" id="ContractCollectionPageResult">
</resultMap>
<select id="selectCustomErpProjectPlanVoList" resultMap="ErpProjectPlanResult">
select t.project_plan_id,
@ -359,5 +361,49 @@
</where>
</select>
<!--
合同回款页面主列表口径:
1) 主表必须为 erp_project_infop
2) 仅查询 p.project_category = '9'(合同订单)
3) 订单编号/订单名称 = p.project_code / p.project_name
4) 合同信息通过 p.contract_id 关联 erp_contract_info
-->
<select id="selectContractCollectionPage" resultMap="ContractCollectionPageResult">
select t.project_plan_id as projectPlanId,
p.project_id as projectId,
p.contract_id as contractId,
p.project_code as orderNo,
p.project_name as orderName,
c.contract_code as contractNo,
c.contract_name as contractName,
p.business_direction as businessDirection,
p.project_category as orderType,
d.dept_name as deptName,
c.total_price as amount,
p.order_payment_rate as paymentRate
from erp_project_info p
inner join erp_project_plan t on p.project_id = t.project_id and t.del_flag = '0'
left join erp_contract_info c on p.contract_id = c.contract_id and c.del_flag = '0'
left join sys_dept d on p.dept_id = d.dept_id
where p.del_flag = '0'
and p.project_category = '9'
<if test="bo != null and bo.contractName != null and bo.contractName != ''">
and c.contract_name like concat('%', #{bo.contractName}, '%')
</if>
<if test="bo != null and bo.contractNo != null and bo.contractNo != ''">
and c.contract_code like concat('%', #{bo.contractNo}, '%')
</if>
<if test="bo != null and bo.orderNo != null and bo.orderNo != ''">
and c.order_contract_code like concat('%', #{bo.orderNo}, '%')
</if>
<if test="bo != null and bo.orderName != null and bo.orderName != ''">
and c.order_contract_code like concat('%', #{bo.orderName}, '%')
</if>
<if test="bo != null and bo.deptName != null and bo.deptName != ''">
and d.dept_name like concat('%', #{bo.deptName}, '%')
</if>
order by p.create_time desc
</select>
</mapper>

@ -7,7 +7,7 @@
</resultMap>
<select id="selectCustomErpProjectPlanStageVoList" resultMap="ErpProjectPlanStageResult">
select plan_stage_id, tenant_id, project_id, project_plan_id, project_phases, plan_start_time, plan_end_time, collection_stage, repayment_rate, repayment_amount, repayment_time, delay_day, receivable_date, reasons_explanation, schedule_remark, real_start_time, real_end_time, sort_order, remark, active_flag, del_flag, create_dept, create_by, create_time, update_by, update_time from erp_project_plan_stage t
select plan_stage_id, tenant_id, project_id, project_plan_id, project_phases, plan_start_time, plan_end_time, collection_stage, repayment_rate, repayment_amount, repayment_time, delay_day, receivable_date, reasons_explanation, schedule_remark, real_start_time, real_end_time, sort_order, remark, active_flag, actual_repayment_amount, collection_confirm_user_id, collection_confirm_time, collection_confirm_status, collection_confirm_remark, del_flag, create_dept, create_by, create_time, update_by, update_time from erp_project_plan_stage t
<where>
<if test="ew != null and ew.sqlSegment != null and ew.sqlSegment != ''">
AND ${ew.sqlSegment}
@ -17,14 +17,14 @@
<!-- 根据ID查询详情 -->
<select id="selectCustomErpProjectPlanStageVoById" resultMap="ErpProjectPlanStageResult">
select plan_stage_id, tenant_id, project_id, project_plan_id, project_phases, plan_start_time, plan_end_time, collection_stage, repayment_rate, repayment_amount, repayment_time, delay_day, receivable_date, reasons_explanation, schedule_remark, real_start_time, real_end_time, sort_order, remark, active_flag, del_flag, create_dept, create_by, create_time, update_by, update_time
select plan_stage_id, tenant_id, project_id, project_plan_id, project_phases, plan_start_time, plan_end_time, collection_stage, repayment_rate, repayment_amount, repayment_time, delay_day, receivable_date, reasons_explanation, schedule_remark, real_start_time, real_end_time, sort_order, remark, active_flag, actual_repayment_amount, collection_confirm_user_id, collection_confirm_time, collection_confirm_status, collection_confirm_remark, del_flag, create_dept, create_by, create_time, update_by, update_time
from erp_project_plan_stage t
where t.plan_stage_id = #{planStageId}
</select>
<!-- 批量查询 - 根据ID列表 -->
<select id="selectCustomErpProjectPlanStageVoByIds" resultMap="ErpProjectPlanStageResult">
select plan_stage_id, tenant_id, project_id, project_plan_id, project_phases, plan_start_time, plan_end_time, collection_stage, repayment_rate, repayment_amount, repayment_time, delay_day, receivable_date, reasons_explanation, schedule_remark, real_start_time, real_end_time, sort_order, remark, active_flag, del_flag, create_dept, create_by, create_time, update_by, update_time
select plan_stage_id, tenant_id, project_id, project_plan_id, project_phases, plan_start_time, plan_end_time, collection_stage, repayment_rate, repayment_amount, repayment_time, delay_day, receivable_date, reasons_explanation, schedule_remark, real_start_time, real_end_time, sort_order, remark, active_flag, actual_repayment_amount, collection_confirm_user_id, collection_confirm_time, collection_confirm_status, collection_confirm_remark, del_flag, create_dept, create_by, create_time, update_by, update_time
from erp_project_plan_stage t
where t.plan_stage_id in
<foreach collection="ids" item="id" open="(" separator="," close=")">
@ -44,7 +44,7 @@
<!-- 分页查询(带自定义条件) -->
<select id="selectCustomErpProjectPlanStageVoPage" resultMap="ErpProjectPlanStageResult">
select plan_stage_id, tenant_id, project_id, project_plan_id, project_phases, plan_start_time, plan_end_time, collection_stage, repayment_rate, repayment_amount, repayment_time, delay_day, receivable_date, reasons_explanation, schedule_remark, real_start_time, real_end_time, sort_order, remark, active_flag, del_flag, create_dept, create_by, create_time, update_by, update_time
select plan_stage_id, tenant_id, project_id, project_plan_id, project_phases, plan_start_time, plan_end_time, collection_stage, repayment_rate, repayment_amount, repayment_time, delay_day, receivable_date, reasons_explanation, schedule_remark, real_start_time, real_end_time, sort_order, remark, active_flag, actual_repayment_amount, collection_confirm_user_id, collection_confirm_time, collection_confirm_status, collection_confirm_remark, del_flag, create_dept, create_by, create_time, update_by, update_time
from erp_project_plan_stage t
<where>
<if test="ew != null and ew.sqlSegment != null and ew.sqlSegment != ''">
@ -95,6 +95,11 @@
active_flag,
del_flag,
actual_repayment_amount,
collection_confirm_user_id,
collection_confirm_time,
collection_confirm_status,
collection_confirm_remark,
create_dept,
@ -149,6 +154,11 @@
#{item.activeFlag},
#{item.delFlag},
#{item.actualRepaymentAmount},
#{item.collectionConfirmUserId},
#{item.collectionConfirmTime},
#{item.collectionConfirmStatus},
#{item.collectionConfirmRemark},
#{item.createDept},
@ -226,6 +236,21 @@
<if test="item.activeFlag != null and item.activeFlag != ''">
active_flag = #{item.activeFlag},
</if>
<if test="item.actualRepaymentAmount != null">
actual_repayment_amount = #{item.actualRepaymentAmount},
</if>
<if test="item.collectionConfirmUserId != null">
collection_confirm_user_id = #{item.collectionConfirmUserId},
</if>
<if test="item.collectionConfirmTime != null">
collection_confirm_time = #{item.collectionConfirmTime},
</if>
<if test="item.collectionConfirmStatus != null and item.collectionConfirmStatus != ''">
collection_confirm_status = #{item.collectionConfirmStatus},
</if>
<if test="item.collectionConfirmRemark != null and item.collectionConfirmRemark != ''">
collection_confirm_remark = #{item.collectionConfirmRemark},
</if>
<if test="item.delFlag != null and item.delFlag != ''">
del_flag = #{item.delFlag},
</if>

Loading…
Cancel
Save