Browse Source

opt: 重构核销费用查询

checkBack
Yen 1 year ago
parent
commit
a06a56a2f1
  1. 47
      src/main/java/com/qs/serve/modules/vtb/controller/VtbVerificationController.java
  2. 12
      src/main/java/com/qs/serve/modules/vtb/entity/VtbVerification.java
  3. 10
      src/main/java/com/qs/serve/modules/vtb/mapper/VtbVerificationMapper.java
  4. 2
      src/main/java/com/qs/serve/modules/vtb/service/VtbVerificationService.java
  5. 8
      src/main/java/com/qs/serve/modules/vtb/service/impl/VtbVerificationServiceImpl.java
  6. 170
      src/main/resources/mapper/vtb/VtbVerfifcationMapper.xml

47
src/main/java/com/qs/serve/modules/vtb/controller/VtbVerificationController.java

@ -1,6 +1,7 @@
package com.qs.serve.modules.vtb.controller; package com.qs.serve.modules.vtb.controller;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.qs.serve.common.config.properties.ProjectApisProperties; import com.qs.serve.common.config.properties.ProjectApisProperties;
import com.qs.serve.common.model.annotation.LimitSubmit; import com.qs.serve.common.model.annotation.LimitSubmit;
import com.qs.serve.common.model.annotation.SysLog; import com.qs.serve.common.model.annotation.SysLog;
@ -112,50 +113,23 @@ public class VtbVerificationController {
@GetMapping("/page") @GetMapping("/page")
@PreAuthorize("hasRole('vtb:verification:query')") @PreAuthorize("hasRole('vtb:verification:query')")
public R<PageVo<VtbVerification>> getPage(VtbVerificationSo param,Integer loadMy,Integer loadChild){ public R<PageVo<VtbVerification>> getPage(VtbVerificationSo param,Integer loadMy,Integer loadChild){
VtbVerification entity = CopierUtil.copy(param,new VtbVerification()); VtbVerification query = CopierUtil.copy(param,new VtbVerification());
LambdaQueryWrapper<VtbVerification> lqw = new LambdaQueryWrapper<>(entity);
//减少mysql limit 产生的 IO
lqw.select(VtbVerification::getId);
if(param.getQueryStartTime()!=null){
lqw.ge(VtbVerification::getCreateTime,param.getQueryStartTime());
}
if(param.getQueryEndTime()!=null){
lqw.le(VtbVerification::getCreateTime,param.getQueryEndTime());
}
if(loadChild!=null&&loadChild.equals(1)){ if(loadChild!=null&&loadChild.equals(1)){
List<String> userIds = sysPostUserService.listByChildIds(AuthContextUtils.getSysUserId()); List<String> userIds = sysPostUserService.listByChildIds(AuthContextUtils.getSysUserId());
userIds.add(AuthContextUtils.getSysUserId()); userIds.add(AuthContextUtils.getSysUserId());
if(userIds.size()==1){ query.setSelectUserIds(userIds);
lqw.and(qw->{
qw.eq(VtbVerification::getUserId,userIds.get(0))
.or().eq(VtbVerification::getExtUserId,userIds.get(0));
});
}else {
lqw.and(qw->{
qw.in(VtbVerification::getUserId,userIds)
.or().in(VtbVerification::getExtUserId,userIds);
});
}
}else if(loadMy!=null&&loadMy.equals(1)){ }else if(loadMy!=null&&loadMy.equals(1)){
lqw.eq(VtbVerification::getUserId,AuthContextUtils.getSysUserId()); query.setSelectUserIds(Arrays.asList(AuthContextUtils.getSysUserId()));
} }
if(StringUtils.hasText(param.getTemplateTitle())){ IPage<VtbVerification> pageResult = vtbVerificationService.selectVerificationList(query);
lqw.like(VtbVerification::getTemplateTitle,param.getTemplateTitle()); if(pageResult.getRecords().size()<1){
} return R.byMbpList(pageResult);
lqw.orderByDesc(VtbVerification::getId);
PageUtil.startPage();
List<VtbVerification> listObjectIds = vtbVerificationService.list(lqw);
if(listObjectIds.size()<1){
return R.byEmptyList();
} }
List<Long> veriIds = listObjectIds.stream().map(VtbVerification::getId).collect(Collectors.toList()); List<Long> actIds = pageResult.getRecords().stream().map(VtbVerification::getActivityId).distinct().collect(Collectors.toList());
List<VtbVerification> list = vtbVerificationService.listByIds(veriIds);
List<Long> actIds = list.stream().map(VtbVerification::getActivityId).distinct().collect(Collectors.toList());
List<TbsActivity> activityList = tbsActivityService.listByIds(actIds); List<TbsActivity> activityList = tbsActivityService.listByIds(actIds);
List<Long> costIds = activityList.stream().map(TbsActivity::getCostApplyId).distinct().collect(Collectors.toList()); List<Long> costIds = activityList.stream().map(TbsActivity::getCostApplyId).distinct().collect(Collectors.toList());
List<TbsCostApply> costList = tbsCostApplyService.listByIds(costIds); List<TbsCostApply> costList = tbsCostApplyService.listByIds(costIds);
for (VtbVerification verification : list) { for (VtbVerification verification : pageResult.getRecords()) {
for (TbsActivity activity : activityList) { for (TbsActivity activity : activityList) {
if(activity.getId().equals(verification.getActivityId())){ if(activity.getId().equals(verification.getActivityId())){
verification.setActivityInfo(activity); verification.setActivityInfo(activity);
@ -167,8 +141,7 @@ public class VtbVerificationController {
} }
} }
} }
Collections.reverse(list); return R.byMbpList(pageResult);
return R.byPageHelperList(listObjectIds,list);
} }
/** /**

12
src/main/java/com/qs/serve/modules/vtb/entity/VtbVerification.java

@ -222,11 +222,23 @@ public class VtbVerification implements Serializable {
@TableField(exist = false) @TableField(exist = false)
private Object activityInfo; private Object activityInfo;
@TableField(exist = false)
private List<String> selectUserIds;
/** /**
* 费用申请 * 费用申请
*/ */
@TableField(exist = false) @TableField(exist = false)
private Object costApplyInfo; private Object costApplyInfo;
/** 开始时间 */
@TableField(exist = false)
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime queryStartTime;
/** 结束时间 */
@TableField(exist = false)
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime queryEndTime;
} }

10
src/main/java/com/qs/serve/modules/vtb/mapper/VtbVerificationMapper.java

@ -2,7 +2,9 @@ package com.qs.serve.modules.vtb.mapper;
import com.baomidou.mybatisplus.annotation.InterceptorIgnore; import com.baomidou.mybatisplus.annotation.InterceptorIgnore;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.qs.serve.modules.sys.entity.SysUser; import com.qs.serve.modules.sys.entity.SysUser;
import com.qs.serve.modules.tbs.entity.TbsCostApply;
import com.qs.serve.modules.vtb.entity.VtbVerification; import com.qs.serve.modules.vtb.entity.VtbVerification;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select; import org.apache.ibatis.annotations.Select;
@ -19,6 +21,14 @@ import java.util.List;
public interface VtbVerificationMapper extends BaseMapper<VtbVerification> { public interface VtbVerificationMapper extends BaseMapper<VtbVerification> {
/**
* 查询列表
* @param page
* @param param
* @return
*/
IPage<VtbVerification> selectVerificationList(IPage<VtbVerification> page, @Param("query")VtbVerification param);
@Select("select COALESCE(sum(amount),0) from vtb_verification where del_flag = 0 and batch_id = #{batchId} ") @Select("select COALESCE(sum(amount),0) from vtb_verification where del_flag = 0 and batch_id = #{batchId} ")
BigDecimal totalVtbAmtByBatchId(@Param("batchId")Long batchId); BigDecimal totalVtbAmtByBatchId(@Param("batchId")Long batchId);

2
src/main/java/com/qs/serve/modules/vtb/service/VtbVerificationService.java

@ -1,5 +1,6 @@
package com.qs.serve.modules.vtb.service; package com.qs.serve.modules.vtb.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import com.qs.serve.common.model.dto.R; import com.qs.serve.common.model.dto.R;
import com.qs.serve.modules.bms.entity.BmsSupplier; import com.qs.serve.modules.bms.entity.BmsSupplier;
@ -25,6 +26,7 @@ import java.util.Map;
*/ */
public interface VtbVerificationService extends IService<VtbVerification> { public interface VtbVerificationService extends IService<VtbVerification> {
IPage<VtbVerification> selectVerificationList(VtbVerification query) ;
/** /**
* 创建协议类核销记录 * 创建协议类核销记录

8
src/main/java/com/qs/serve/modules/vtb/service/impl/VtbVerificationServiceImpl.java

@ -2,6 +2,7 @@ package com.qs.serve.modules.vtb.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.qs.serve.common.config.DevEnvironmentConfig; import com.qs.serve.common.config.DevEnvironmentConfig;
import com.qs.serve.common.config.properties.ProjectApisProperties; import com.qs.serve.common.config.properties.ProjectApisProperties;
@ -129,6 +130,13 @@ public class VtbVerificationServiceImpl extends ServiceImpl<VtbVerificationMappe
private final BmsRegion2Mapper region2Mapper; private final BmsRegion2Mapper region2Mapper;
private final TbsCostPercentMapper costPercentMapper; private final TbsCostPercentMapper costPercentMapper;
@Override
public IPage<VtbVerification> selectVerificationList(VtbVerification query) {
IPage<VtbVerification> iPage = PageUtil.getMbpPage();
IPage<VtbVerification> result = baseMapper.selectVerificationList(iPage,query);
return result;
}
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void createContactRecord(VtbVerificationContactBo param) { public void createContactRecord(VtbVerificationContactBo param) {

170
src/main/resources/mapper/vtb/VtbVerfifcationMapper.xml

@ -2,6 +2,176 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.qs.serve.modules.vtb.mapper.VtbVerificationMapper"> <mapper namespace="com.qs.serve.modules.vtb.mapper.VtbVerificationMapper">
<resultMap id="vtbVerificationMap" type="com.qs.serve.modules.vtb.entity.VtbVerification" >
<result property="id" column="id"/>
<result property="verificationMainCode" column="verification_main_code"/>
<result property="verificationCode" column="verification_code"/>
<result property="finishedTime" column="finished_time"/>
<result property="batchId" column="batch_id"/>
<result property="costApplyId" column="cost_apply_id"/>
<result property="activityId" column="activity_id"/>
<result property="policyItemId" column="policy_item_id"/>
<result property="policyItemCode" column="policy_item_code"/>
<result property="attachIds" column="attach_ids" typeHandler="com.qs.serve.common.framework.mybatis.handler.meta.SplitStringTypeHandler" />
<result property="verificationState" column="verification_state"/>
<result property="paymentState" column="payment_state"/>
<result property="regReleaseFlag" column="reg_release_flag"/>
<result property="regReleaseUserId" column="reg_release_user_id"/>
<result property="amount" column="amount"/>
<result property="amountRecord" column="amount_record"/>
<result property="wayId" column="way_id"/>
<result property="wayTitle" column="way_title"/>
<result property="disCode" column="dis_code"/>
<result property="billNumber" column="bill_number"/>
<result property="remark" column="remark"/>
<result property="createTime" column="create_time"/>
<result property="updateTime" column="update_time"/>
<result property="tenantId" column="tenant_id"/>
<result property="createBy" column="create_by"/>
<result property="updateBy" column="update_by"/>
<result property="delFlag" column="del_flag"/>
<result property="syFormId" column="sy_form_id"/>
<result property="syFlowId" column="sy_flow_id"/>
<result property="supplierId" column="supplier_id"/>
<result property="supplierCode" column="supplier_code"/>
<result property="supplierName" column="supplier_name"/>
<result property="userId" column="user_id"/>
<result property="userCode" column="user_code"/>
<result property="userName" column="user_name"/>
<result property="payConditionId" column="pay_condition_id"/>
<result property="activityCode" column="activity_code"/>
<result property="costApplyCode" column="cost_apply_code"/>
<result property="supplierBizRegionFirstName" column="supplier_biz_region_first_name"/>
<result property="supplierBizRegionSecondName" column="supplier_biz_region_second_name"/>
<result property="supplierBizRegionThirdName" column="supplier_biz_region_third_name"/>
<result property="inputReleaseFlag" column="input_release_flag"/>
<result property="payReleaseFlag" column="pay_release_flag"/>
<result property="extUserId" column="ext_user_id"/>
<result property="extUserCode" column="ext_user_code"/>
<result property="extUserName" column="ext_user_name"/>
<result property="templateTitle" column="template_title"/>
</resultMap>
<sql id="vtbVerificationSql">
vtb_verification.`id`,
vtb_verification.`verification_main_code`,
vtb_verification.`verification_code`,
vtb_verification.`finished_time`,
vtb_verification.`batch_id`,
vtb_verification.`cost_apply_id`,
vtb_verification.`activity_id`,
vtb_verification.`policy_item_id`,
vtb_verification.`policy_item_code`,
vtb_verification.`attach_ids`,
vtb_verification.`verification_state`,
vtb_verification.`payment_state`,
vtb_verification.`reg_release_flag`,
vtb_verification.`reg_release_user_id`,
vtb_verification.`amount`,
vtb_verification.`amount_record`,
vtb_verification.`way_id`,
vtb_verification.`way_title`,
vtb_verification.`dis_code`,
vtb_verification.`bill_number`,
vtb_verification.`remark`,
vtb_verification.`create_time`,
vtb_verification.`update_time`,
vtb_verification.`tenant_id`,
vtb_verification.`create_by`,
vtb_verification.`update_by`,
vtb_verification.`del_flag`,
vtb_verification.`sy_form_id`,
vtb_verification.`sy_flow_id`,
vtb_verification.`supplier_id`,
vtb_verification.`supplier_code`,
vtb_verification.`supplier_name`,
vtb_verification.`user_id`,
vtb_verification.`user_code`,
vtb_verification.`user_name`,
vtb_verification.`pay_condition_id`,
vtb_verification.`activity_code`,
vtb_verification.`cost_apply_code`,
vtb_verification.`supplier_biz_region_first_name`,
vtb_verification.`supplier_biz_region_second_name`,
vtb_verification.`supplier_biz_region_third_name`,
vtb_verification.`input_release_flag`,
vtb_verification.`pay_release_flag`,
vtb_verification.`ext_user_id`,
vtb_verification.`ext_user_code`,
vtb_verification.`ext_user_name`,
vtb_verification.`template_title` </sql>
<select id="selectVerificationList" parameterType="com.qs.serve.modules.vtb.entity.VtbVerification" resultMap="vtbVerificationMap">
SELECT <include refid="vtbVerificationSql"/>
FROM `vtb_verification` `vtb_verification`
left join tbs_activity on vtb_verification.activity_id = tbs_activity.id and tbs_activity.del_flag = 0
left join tbs_cost_apply on vtb_verification.cost_apply_id = tbs_cost_apply.id and tbs_cost_apply.del_flag = 0
<where>
<if test="query.queryStartTime != null"> and `vtb_verification`.`create_time` &gt;= #{query.queryStartTime}</if>
<if test="query.queryEndTime != null"> and `vtb_verification`.`create_time` &lt;= #{query.queryEndTime}</if>
<if test="query.selectUserIds!=null and query.selectUserIds.size > 0">
and ( vtb_verification.user_id in
<foreach collection="query.selectUserIds"
item="selectId" index="i" open="(" close=")" separator=",">
#{selectId}
</foreach>
or vtb_verification.ext_user_id in
<foreach collection="query.selectUserIds"
item="selectId" index="i" open="(" close=")" separator=",">
#{selectId}
</foreach> )
</if>
<if test="query.id != null"> and `vtb_verification`.`id` = #{query.id}</if>
<if test="query.verificationMainCode != null and query.verificationMainCode != ''"> and `vtb_verification`.`verification_main_code` = #{query.verificationMainCode}</if>
<if test="query.verificationCode != null and query.verificationCode != ''"> and `vtb_verification`.`verification_code` like concat('%', #{query.verificationCode} ,'%') </if>
<if test="query.finishedTime != null"> and `vtb_verification`.`finished_time` = #{query.finishedTime}</if>
<if test="query.batchId != null"> and `vtb_verification`.`batch_id` = #{query.batchId}</if>
<if test="query.costApplyId != null"> and `vtb_verification`.`cost_apply_id` = #{query.costApplyId}</if>
<if test="query.activityId != null"> and `vtb_verification`.`activity_id` = #{query.activityId}</if>
<if test="query.policyItemId != null"> and `vtb_verification`.`policy_item_id` = #{query.policyItemId}</if>
<if test="query.policyItemCode != null and query.policyItemCode != ''"> and `vtb_verification`.`policy_item_code` = #{query.policyItemCode}</if>
<if test="query.verificationState != null"> and `vtb_verification`.`verification_state` = #{query.verificationState}</if>
<if test="query.paymentState != null"> and `vtb_verification`.`payment_state` = #{query.paymentState}</if>
<if test="query.regReleaseFlag != null"> and `vtb_verification`.`reg_release_flag` = #{query.regReleaseFlag}</if>
<if test="query.regReleaseUserId != null and query.regReleaseUserId != ''"> and `vtb_verification`.`reg_release_user_id` = #{query.regReleaseUserId}</if>
<if test="query.amount != null"> and `vtb_verification`.`amount` = #{query.amount}</if>
<if test="query.amountRecord != null"> and `vtb_verification`.`amount_record` = #{query.amountRecord}</if>
<if test="query.wayId != null"> and `vtb_verification`.`way_id` = #{query.wayId}</if>
<if test="query.wayTitle != null and query.wayTitle != ''"> and `vtb_verification`.`way_title` = #{query.wayTitle}</if>
<if test="query.disCode != null and query.disCode != ''"> and `vtb_verification`.`dis_code` = #{query.disCode}</if>
<if test="query.billNumber != null and query.billNumber != ''"> and `vtb_verification`.`bill_number` = #{query.billNumber}</if>
<if test="query.createTime != null"> and `vtb_verification`.`create_time` = #{query.createTime}</if>
<if test="query.updateTime != null"> and `vtb_verification`.`update_time` = #{query.updateTime}</if>
<if test="query.tenantId != null and query.tenantId != ''"> and `vtb_verification`.`tenant_id` = #{query.tenantId}</if>
<if test="query.createBy != null and query.createBy != ''"> and `vtb_verification`.`create_by` = #{query.createBy}</if>
<if test="query.updateBy != null and query.updateBy != ''"> and `vtb_verification`.`update_by` = #{query.updateBy}</if>
<if test="query.delFlag != null and query.delFlag != ''"> and `vtb_verification`.`del_flag` = #{query.delFlag}</if>
<if test="query.syFormId != null and query.syFormId != ''"> and `vtb_verification`.`sy_form_id` = #{query.syFormId}</if>
<if test="query.syFlowId != null and query.syFlowId != ''"> and `vtb_verification`.`sy_flow_id` = #{query.syFlowId}</if>
<if test="query.supplierId != null"> and `vtb_verification`.`supplier_id` = #{query.supplierId}</if>
<if test="query.supplierCode != null and query.supplierCode != ''"> and `vtb_verification`.`supplier_code` like concat('%', #{query.supplierCode} ,'%') </if>
<if test="query.supplierName != null and query.supplierName != ''"> and `vtb_verification`.`supplier_name` like concat('%', #{query.supplierName} ,'%') </if>
<if test="query.userId != null and query.userId != ''"> and `vtb_verification`.`user_id` = #{query.userId}</if>
<if test="query.userCode != null and query.userCode != ''"> and `vtb_verification`.`user_code` like concat('%', #{query.userCode} ,'%') </if>
<if test="query.userName != null and query.userName != ''"> and `vtb_verification`.`user_name` like concat('%', #{query.userName} ,'%')</if>
<if test="query.payConditionId != null"> and `vtb_verification`.`pay_condition_id` = #{query.payConditionId}</if>
<if test="query.activityCode != null and query.activityCode != ''"> and `vtb_verification`.`activity_code` like concat('%', #{query.activityCode} ,'%') </if>
<if test="query.costApplyCode != null and query.costApplyCode != ''"> and `vtb_verification`.`cost_apply_code` like concat('%', #{query.costApplyCode} ,'%') </if>
<if test="query.supplierBizRegionFirstName != null and query.supplierBizRegionFirstName != ''"> and `vtb_verification`.`supplier_biz_region_first_name` like concat('%', #{query.supplierBizRegionFirstName} ,'%') </if>
<if test="query.supplierBizRegionSecondName != null and query.supplierBizRegionSecondName != ''"> and `vtb_verification`.`supplier_biz_region_second_name` like concat('%', #{query.supplierBizRegionSecondName} ,'%') </if>
<if test="query.supplierBizRegionThirdName != null and query.supplierBizRegionThirdName != ''"> and `vtb_verification`.`supplier_biz_region_third_name` like concat('%', #{query.supplierBizRegionThirdName},'%') </if>
<if test="query.inputReleaseFlag != null"> and `vtb_verification`.`input_release_flag` = #{query.inputReleaseFlag}</if>
<if test="query.payReleaseFlag != null"> and `vtb_verification`.`pay_release_flag` = #{query.payReleaseFlag}</if>
<if test="query.extUserId != null and query.extUserId != ''"> and `vtb_verification`.`ext_user_id` = #{query.extUserId}</if>
<if test="query.extUserCode != null and query.extUserCode != ''"> and `vtb_verification`.`ext_user_code` = #{query.extUserCode}</if>
<if test="query.extUserName != null and query.extUserName != ''"> and `vtb_verification`.`ext_user_name` = #{query.extUserName}</if>
<if test="query.templateTitle != null and query.templateTitle != ''"> and `vtb_verification`.`template_title` like concat('%', #{query.templateTitle} ,'%')</if>
</where>
order by vtb_verification.id desc
</select>
<update id="updateCostExtUserByCostIds"> <update id="updateCostExtUserByCostIds">
update vtb_verification update vtb_verification

Loading…
Cancel
Save