资金变动明细导出

localizer
ljw 2025-10-20 11:50:31 +08:00
parent af1ff014cd
commit 040456e19a
6 changed files with 184 additions and 6 deletions

View File

@ -9,6 +9,8 @@ import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.List;
/**
@ -65,4 +67,12 @@ public class MoneyChangeDetailController {
return R.success(moneyChangeDetailService.paging(pageParam, moneyChangeDetailEntity));
}
/**
*
*/
@GetMapping(value = "/export")
public void export(HttpServletResponse response, MoneyChangeDetailEntity entity) throws IOException {
moneyChangeDetailService.export(response, entity);
}
}

View File

@ -1,12 +1,17 @@
package com.njzscloud.supervisory.money.mapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.njzscloud.supervisory.money.pojo.entity.MoneyChangeDetailEntity;
import com.njzscloud.supervisory.money.pojo.result.MoneyChangeDetailExportResult;
import com.njzscloud.supervisory.order.pojo.result.OrderPagingResult;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
*
*/
@ -17,4 +22,6 @@ public interface MoneyChangeDetailMapper extends BaseMapper<MoneyChangeDetailEnt
*/
IPage<MoneyChangeDetailEntity> page(Page<MoneyChangeDetailEntity> page, @Param("entity") MoneyChangeDetailEntity entity);
List<MoneyChangeDetailExportResult> exportList(@Param("entity") MoneyChangeDetailEntity entity);
}

View File

@ -0,0 +1,86 @@
package com.njzscloud.supervisory.money.pojo.result;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
import lombok.experimental.Accessors;
import java.math.BigDecimal;
@Getter
@Setter
@ToString
@Accessors(chain = true)
public class MoneyChangeDetailExportResult {
/**
*
*/
private Integer sort;
/**
*
*/
private String sn;
/**
*
*/
private String licensePlate;
/**
*
*/
private String moneyChangeCategory;
/**
* ;
*/
private BigDecimal delta;
/**
* ;
*/
private BigDecimal newMoney;
/**
*
*/
private String goodsName;
/**
* ;
*/
private BigDecimal unitPrice;
/**
*
*/
private String roughWeight;
/**
*
*/
private String tareWeight;
/**
*
*/
private String settleWeight;
/**
*
*/
private String inTime;
/**
*
*/
private String outTime;
/**
*
*/
private String memo;
}

View File

@ -9,11 +9,18 @@ import com.njzscloud.common.mp.support.PageResult;
import com.njzscloud.common.security.util.SecurityUtil;
import com.njzscloud.supervisory.money.mapper.MoneyChangeDetailMapper;
import com.njzscloud.supervisory.money.pojo.entity.MoneyChangeDetailEntity;
import com.njzscloud.supervisory.money.pojo.result.MoneyChangeDetailExportResult;
import com.njzscloud.supervisory.order.utils.FileUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
/**
*
@ -62,4 +69,30 @@ public class MoneyChangeDetailService extends ServiceImpl<MoneyChangeDetailMappe
return PageResult.of(result);
}
public void export(HttpServletResponse response, MoneyChangeDetailEntity entity) throws IOException {
List<MoneyChangeDetailExportResult> list = baseMapper.exportList(entity);
List<Map<String, Object>> downList = new ArrayList<>();
int i = 1;
for (MoneyChangeDetailExportResult result : list) {
Map<String, Object> map = new LinkedHashMap<>();
map.put("编号", i);
map.put("订单号", result.getSn());
map.put("车牌号", result.getLicensePlate());
map.put("变动类型", result.getMoneyChangeCategory());
map.put("变动金额", result.getDelta());
map.put("余额", result.getNewMoney());
map.put("产品名称", result.getGoodsName());
map.put("单价", result.getUnitPrice());
map.put("入场磅重(吨)", result.getRoughWeight());
map.put("皮重(吨)", result.getTareWeight());
map.put("净重(吨)", result.getSettleWeight());
map.put("进场时间", result.getInTime());
map.put("出场时间", result.getOutTime());
map.put("备注", result.getMemo());
downList.add(map);
i++;
}
FileUtil.downloadExcel(downList, response, "资金变动明细.xlsx");
}
}

View File

@ -21,16 +21,17 @@
mcd.modify_time,
mcd.deleted,
CASE
WHEN mcd.user_id IS NOT NULL THEN u.nickname
WHEN mcd.company_id IS NOT NULL THEN bc.company_name
ELSE NULL
END as nickname
WHEN mcd.user_id IS NOT NULL THEN u.nickname
WHEN mcd.company_id IS NOT NULL THEN bc.company_name
ELSE NULL
END as nickname
FROM money_change_detail mcd
LEFT JOIN sys_user u ON mcd.user_id = u.id
LEFT JOIN biz_company bc ON mcd.company_id = bc.id
<where>
<if test="entity.nickname != null and entity.nickname != ''">
AND u.nickname LIKE CONCAT('%', #{entity.nickname}, '%')
AND (u.nickname LIKE CONCAT('%', #{entity.nickname}, '%') or
bc.company_name LIKE CONCAT('%', #{entity.nickname}, '%'))
</if>
<if test="entity.moneyChangeCategory != null">
AND mcd.money_change_category = #{entity.moneyChangeCategory}
@ -38,4 +39,45 @@
</where>
ORDER BY mcd.modify_time DESC
</select>
<select id="exportList" resultType="com.njzscloud.supervisory.money.pojo.result.MoneyChangeDetailExportResult">
SELECT
oi.sn,
bt.license_plate,
sdi.txt AS money_change_category,
mcd.delta,
mcd.new_money,
og.goods_name,
og.unit_price,
ROUND( ocio.rough_weight / 1000, 2 ) AS rough_weight,
ROUND( ocio.tare_weight / 1000, 2 ) AS tare_weight,
ROUND( ocio.settle_weight / 1000, 2 ) AS settle_weight,
ocio.in_time,
ocio.out_time,
mcd.memo
FROM
money_change_detail mcd
LEFT JOIN order_info oi ON oi.id = mcd.order_id
LEFT JOIN biz_truck bt ON bt.id = oi.truck_id
LEFT JOIN sys_dict_item sdi ON mcd.money_change_category = sdi.val
AND sdi.dict_key = 'money_change_category'
LEFT JOIN order_goods og ON og.id = oi.goods_id
LEFT JOIN order_car_in_out ocio ON ocio.id = oi.car_in_out_id
LEFT JOIN sys_user u ON mcd.user_id = u.id
LEFT JOIN biz_company bc ON mcd.company_id = bc.id
<where>
<if test="entity.nickname != null and entity.nickname != ''">
AND (u.nickname LIKE CONCAT('%', #{entity.nickname}, '%') or
bc.company_name LIKE CONCAT('%', #{entity.nickname}, '%'))
</if>
<if test="entity.moneyChangeCategory != null">
AND mcd.money_change_category = #{entity.moneyChangeCategory}
</if>
<if test="entity.companyId != null">
AND mcd.company_id = #{entity.companyId}
</if>
</where>
ORDER BY
mcd.create_time DESC
</select>
</mapper>

View File

@ -231,7 +231,7 @@
LEFT JOIN biz_company c ON c.id = a.trans_company_id
LEFT JOIN biz_truck d ON d.id = a.truck_id
LEFT JOIN sys_dict_item e ON d.truck_category = e.val
AND dict_key = 'vehicle_type'
AND e.dict_key = 'vehicle_type'
LEFT JOIN order_car_in_out f ON f.id = a.car_in_out_id
LEFT JOIN biz_company g ON a.user_id = g.user_id
LEFT JOIN order_cargo_place h ON h.id = a.cargo_place_id