Merge #109 into master from cc_20260420_export

feat:数量不一致

* cc_20260420_export: (7 commits squashed)

  - feat:提示修改

  - feat:提示修改

  - feat:导出调整

  - feat:管理员查询所有 非管理员权限查询

  - feat:管理员查询所有 非管理员权限查询

  - feat:fix

  - feat:数量不一致

Signed-off-by: 正新 <accounts_6964c7bcd2a2c377c5bbd01b@mail.teambition.com>
Merged-by: 正新 <accounts_6964c7bcd2a2c377c5bbd01b@mail.teambition.com>

CR-link: https://codeup.aliyun.com/692ea314dec569489f6f167c/hangzhou/java/custom_zxjp/change/109
This commit is contained in:
正新
2026-04-24 09:44:31 +00:00
parent d885635728
commit 7c5a2c858d
28 changed files with 756 additions and 69 deletions

View File

@@ -380,6 +380,21 @@ public class RedisConstant {
*/
public static final String TP_SCORE_JOURNAL_EXPORT_LOCK = "tp_score_journal_export_lock";
/**
* 费用调整单导出锁
*/
public static final String ADJUSTMENT_ORDER_EXPORT_LOCK = "adjustment_order_export_lock";
/**
* 费用单导出锁
*/
public static final String EXPENSE_ORDER_EXPORT_LOCK = "expense_order_export_lock";
/**
* 分账单导出锁
*/
public static final String SPLIT_ORDER_EXPORT_LOCK = "split_order_export_lock";
/**
* 钱包分账公司配置-招商分部
*/

View File

@@ -35,6 +35,9 @@ public enum FileTypeEnum {
MY_POINT_EXPORT("myPointExport", "我的铺位管理列表"),
ORDER_DEVICE_DETAIL_EXPORT("orderDeviceDetailExport", "订单设备明细导出"),
TP_SCORE_JOURNAL_EXPORT("tpScoreJournalExport", "十二分制积分流水导出"),
ADJUSTMENT_ORDER_EXPORT("adjustmentOrderExport", "费用调整单导出"),
EXPENSE_ORDER_EXPORT("expenseOrderExport", "费用单导出"),
SPLIT_ORDER_EXPORT("splitOrderExport", "分账单导出"),
;
private String fileType;
private String desc;

View File

@@ -0,0 +1,40 @@
package com.cool.store.enums.wallet;
/**
* @Auther zx_szh
* @Date 2026/4/20 20:31
* @Version 1.0
*/
public enum AdjustTypeEnum {
ADJUST_TYPE_1(1,"调增"),
ADJUST_NAME_2(2,"调减"),
;
private final Integer code;
private final String desc;
AdjustTypeEnum(Integer status, String desc) {
this.code = status;
this.desc = desc;
}
public Integer getCode() {
return code;
}
public String getDesc() {
return desc;
}
public static AdjustTypeEnum fromCode(Integer code) {
for (AdjustTypeEnum item : values()) {
if (item.code.equals(code)) {
return item;
}
}
return null;
}
}

View File

@@ -33,5 +33,14 @@ public enum DocStatusEnum {
}
public static DocStatusEnum fromStatus(Integer status) {
for (DocStatusEnum item : values()) {
if (item.status.equals(status)) {
return item;
}
}
return null;
}
}

View File

@@ -35,6 +35,14 @@ public enum SplitSourceEnum {
return null;
}
public static SplitSourceEnum fromStatus(Integer status) {
for (SplitSourceEnum item : values()) {
if (item.status.equals(status)) {
return item;
}
}
return null;
}
public Integer getStatus() {

View File

@@ -1,6 +1,5 @@
package com.cool.store.enums.wallet;
import com.cool.store.enums.ExpenseSheetTypeEnum;
/**
* @Auther zx_szh
@@ -27,6 +26,15 @@ public enum SplitTypeEnum {
}
public static SplitTypeEnum fromStatus(Integer status) {
for (SplitTypeEnum item : values()) {
if (item.status.equals(status)) {
return item;
}
}
return null;
}
public Integer getStatus() {
return status;

View File

@@ -116,6 +116,13 @@ public class AdjustmentOrderDAO {
return AdjustmentOrderMapper.pageQuery(request);
}
/**
* 分页查询总数
*/
public Long pageCount(AdjustmentOrderPageRequest request) {
return AdjustmentOrderMapper.pageCount(request);
}
/**
* 删除
*/

View File

@@ -112,6 +112,13 @@ public class SplitOrderDAO {
return zxjpSplitOrderMapper.pageQueryWithStore(request);
}
/**
* 分页查询总数
*/
public Long pageCount(SplitOrderPageRequest request) {
return zxjpSplitOrderMapper.pageCount(request);
}
/**
* 删除
*/

View File

@@ -48,4 +48,9 @@ public interface AdjustmentOrderMapper extends Mapper<AdjustmentOrderDO> {
* 分页查询
*/
List<AdjustmentOrderResponse> pageQuery(@Param("request") AdjustmentOrderPageRequest request);
/**
* 分页查询总数
*/
Long pageCount(@Param("request") AdjustmentOrderPageRequest request);
}

View File

@@ -48,4 +48,9 @@ public interface SplitOrderMapper extends Mapper<SplitOrderDO> {
* 分页查询(关联门店信息)
*/
List<SplitOrderResponse> pageQueryWithStore(@Param("request") SplitOrderPageRequest request);
/**
* 分页查询总数
*/
Long pageCount(@Param("request") SplitOrderPageRequest request);
}

View File

@@ -97,8 +97,63 @@
<if test="request.expenseSheetType != null and request.expenseSheetType != ''">
and a.expense_sheet_type = #{request.expenseSheetType}
</if>
<if test="request.regionIds != null and !request.regionIds.isEmpty()">
AND <foreach collection="request.regionIds" item="regionId" separator=" OR " open="(" close=")">
b.region_path LIKE CONCAT('%/', #{regionId}, '/%')
</foreach>
</if>
order by create_time desc
</select>
<!-- 分页查询总数 -->
<select id="pageCount" resultType="java.lang.Long">
select count(1)
from zxjp_adjustment_order a
left join store_${enterpriseId} b
on a.store_id = b.store_id
where a.deleted = 0
<if test="request.keyword != null and request.keyword != ''">
and (b.store_name like concat('%', #{request.keyword}, '%')
or b.store_num like concat('%', #{request.keyword}, '%'))
</if>
<if test="request.adjustmentNo != null and request.adjustmentNo != ''">
and a.adjustment_no like concat('%', #{request.adjustmentNo}, '%')
</if>
<if test="request.storeId != null and request.storeId != ''">
and a.store_id = #{request.storeId}
</if>
<if test="request.expenseTypeCode != null and request.expenseTypeCode != ''">
and a.expense_type_code = #{request.expenseTypeCode}
</if>
<if test="request.adjustType != null">
and a.adjust_type = #{request.adjustType}
</if>
<if test="request.statusList != null and request.statusList.size() > 0">
and a.status in
<foreach collection="request.statusList" item="status" open="(" separator="," close=")">
#{status}
</foreach>
</if>
<if test="request.adjustReason != null and request.adjustReason != ''">
and a.adjust_reason like concat('%', #{request.adjustReason}, '%')
</if>
<if test="request.businessTypeCode != null and request.businessTypeCode != ''">
and a.business_type_code = #{request.businessTypeCode}
</if>
<if test="request.claimStartTime != null">
and a.claim_time &gt;= #{request.claimStartTime}
</if>
<if test="request.claimEndTime != null">
and a.claim_time &lt;= #{request.claimEndTime}
</if>
<if test="request.expenseSheetType != null and request.expenseSheetType != ''">
and a.expense_sheet_type = #{request.expenseSheetType}
</if>
<if test="request.regionIds != null and !request.regionIds.isEmpty()">
AND <foreach collection="request.regionIds" item="regionId" separator=" OR " open="(" close=")">
b.region_path LIKE CONCAT('%/', #{regionId}, '/%')
</foreach>
</if>
</select>
</mapper>

View File

@@ -141,6 +141,43 @@
ORDER BY a.create_time DESC
</select>
<!-- 分页查询总数 -->
<select id="pageCount" resultType="java.lang.Long">
select count(1)
from zxjp_split_order a
left join store_${enterpriseId} b
on a.related_store_id = b.store_id
where a.deleted = 0
<if test="request.splitNo != null and request.splitNo != ''">
AND a.split_no LIKE CONCAT('%', #{request.splitNo}, '%')
</if>
<if test="request.splitType != null">
AND a.split_type = #{request.splitType}
</if>
<if test="request.payerAccountName != null and request.payerAccountName != ''">
AND a.payer_account_name LIKE CONCAT('%', #{request.payerAccountName}, '%')
</if>
<if test="request.payeeAccountName != null and request.payeeAccountName != ''">
AND a.payee_account_name LIKE CONCAT('%', #{request.payeeAccountName}, '%')
</if>
<if test="request.expenseTypeCode != null and request.expenseTypeCode != ''">
AND a.expense_type_code = #{request.expenseTypeCode}
</if>
<if test="request.relatedStoreId != null and request.relatedStoreId != ''">
AND a.related_store_id = #{request.relatedStoreId}
</if>
<if test="request.relatedDocNo != null and request.relatedDocNo != ''">
AND a.related_doc_no LIKE CONCAT('%', #{request.relatedDocNo}, '%')
</if>
<if test="request.status != null and request.status != ''">
AND a.status = #{request.status}
</if>
<if test="request.source != null">
AND a.source = #{request.source}
</if>
<if test="request.keyword != null and request.keyword != ''">
AND (b.store_name LIKE CONCAT('%', #{request.keyword}, '%') OR b.store_num LIKE CONCAT('%', #{request.keyword}, '%'))
</if>
</select>
</mapper>
</mapper>

View File

@@ -0,0 +1,68 @@
package com.cool.store.converter;
import com.alibaba.excel.converters.Converter;
import com.alibaba.excel.enums.CellDataTypeEnum;
import com.alibaba.excel.metadata.CellData;
import com.alibaba.excel.metadata.GlobalConfiguration;
import com.alibaba.excel.metadata.property.ExcelContentProperty;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.stream.Collectors;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
/**
* @Auther zx_szh
* @Date 2026/4/20 20:14
* @Version 1.0
*/
public class StringListConverter implements Converter<List<String>> {
@Override
public Class<?> supportJavaTypeKey() {
return List.class;
}
@Override
public CellDataTypeEnum supportExcelTypeKey() {
return CellDataTypeEnum.STRING;
}
/**
* 读取Excel时将单元格字符串转换为 List<String>
*/
@Override
public List<String> convertToJavaData(CellData cellData,
ExcelContentProperty excelContentProperty,
GlobalConfiguration globalConfiguration) throws Exception {
// 获取单元格字符串值
String cellValue = cellData.getStringValue();
// 空值判断
if (StringUtils.isBlank(cellValue)) {
return Collections.emptyList();
}
// 按分隔符拆分(这里用逗号,可根据需要修改)
return Arrays.stream(cellValue.split(","))
.map(String::trim) // 去除前后空格
.filter(StringUtils::isNotBlank) // 过滤空字符串
.collect(Collectors.toList());
}
/**
* 写入Excel时将 List<String> 转换为字符串写入单元格
*/
@Override
public CellData<String> convertToExcelData(List<String> strings,
ExcelContentProperty excelContentProperty,
GlobalConfiguration globalConfiguration) throws Exception {
if (CollectionUtils.isEmpty(strings)) {
return new CellData<>("");
}
// 用逗号拼接(可根据需要修改分隔符)
String result = String.join(",", strings);
return new CellData<>(result);
}
}

View File

@@ -44,4 +44,6 @@ public class AdjustmentOrderPageRequest extends PageBasicInfo implements Seriali
private Date claimEndTime;
private String storeId;
private List<String> regionIds;
}

View File

@@ -1,6 +1,13 @@
package com.cool.store.response;
import com.alibaba.excel.annotation.ExcelIgnore;
import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.format.DateTimeFormat;
import com.alibaba.excel.annotation.write.style.ColumnWidth;
import com.cool.store.annotation.DictField;
import com.cool.store.converter.StringListConverter;
import com.cool.store.enums.wallet.AdjustTypeEnum;
import com.cool.store.enums.wallet.DocStatusEnum;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@@ -13,85 +20,154 @@ import java.util.List;
public class AdjustmentOrderResponse implements Serializable {
@ApiModelProperty("主键ID")
@ExcelIgnore
private Long id;
@ApiModelProperty("调整单号")
@ExcelProperty(value = "调整单号", order = 1)
@ColumnWidth(30)
private String adjustmentNo;
@ApiModelProperty("门店ID")
@ExcelIgnore
private String storeId;
@ApiModelProperty("门店名称")
@ExcelProperty(value = "门店名称", order = 2)
@ColumnWidth(30)
private String storeName;
@ApiModelProperty("门店编码")
@ExcelProperty(value = "门店编码", order = 3)
@ColumnWidth(30)
private String storeNum;
@ApiModelProperty("业务类型")
@ExcelIgnore
private String businessTypeCode;
@ApiModelProperty("业务类型名称")
@DictField(sourceField="businessTypeCode")
private String businessTypeName;
@ApiModelProperty("费用类型")
@ExcelIgnore
private String expenseTypeCode;
@ApiModelProperty("费用类型名称")
@DictField(sourceField= "expenseTypeCode")
@ExcelProperty(value = "费用类型名称", order = 4)
@ColumnWidth(30)
private String expenseTypeName;
@ApiModelProperty("业务类型名称")
@DictField(sourceField="businessTypeCode")
@ExcelProperty(value = "业务类型名称", order = 5)
@ColumnWidth(30)
private String businessTypeName;
@ApiModelProperty("调整类型1-调增 2-调减)")
@ExcelIgnore
private Integer adjustType;
@ApiModelProperty("调整类型1-调增 2-调减)")
@ExcelProperty(value = "调整类型名称", order = 6)
@ColumnWidth(30)
private String adjustTypeName;
@ApiModelProperty("调整金额")
@ExcelProperty(value = "调整金额", order = 7)
@ColumnWidth(30)
private BigDecimal adjustAmount;
@ApiModelProperty("调整原因")
private String adjustReason;
@ApiModelProperty("备注")
private String remark;
@ApiModelProperty("附件信息")
private String attachmentInfo;
@ApiModelProperty("单据状态10-待充值/20-已充值待认款/30-认款完成/40-分部分账/50-分账完成)")
private Integer status;
@ApiModelProperty("创建人")
private String createUserId;
@ApiModelProperty("创建人姓名")
private String createUserName;
@ApiModelProperty("创建时间")
private Date createTime;
@ApiModelProperty("已分账金额")
@ExcelProperty(value = "已分账金额", order = 8)
@ColumnWidth(30)
private BigDecimal settledAmount;
@ApiModelProperty("待分账金额")
@ExcelProperty(value = "待分账金额", order = 9)
@ColumnWidth(30)
private BigDecimal pendingSettlementAmount;
@ApiModelProperty("调整原因")
@ExcelProperty(value = "调整原因", order = 10)
@ColumnWidth(30)
private String adjustReason;
@ApiModelProperty("备注")
@ExcelProperty(value = "备注", order = 11)
@ColumnWidth(30)
private String remark;
@ApiModelProperty("单据状态10-待充值/20-已充值待认款/30-认款完成/40-分部分账/50-分账完成)")
@ExcelIgnore
private Integer status;
@ApiModelProperty("单据状态10-待充值/20-已充值待认款/30-认款完成/40-分部分账/50-分账完成)")
@ExcelProperty(value = "单据状态名称", order = 12)
@ColumnWidth(30)
private String statusName;
@ApiModelProperty("合同附件信息")
@ExcelProperty(value = "合同附件信息", order = 13)
@ColumnWidth(30)
private String contractAttachmentInfo;
@ApiModelProperty("附件信息")
@ExcelProperty(value = "附件信息", order = 14)
@ColumnWidth(30)
private String attachmentInfo;
@ApiModelProperty("创建人")
@ExcelIgnore
private String createUserId;
@ApiModelProperty("创建人姓名")
@ExcelProperty(value = "创建人姓名", order = 15)
@ColumnWidth(30)
private String createUserName;
@ApiModelProperty("创建时间")
@ExcelProperty(value = "创建时间", order = 16)
@DateTimeFormat("yyyy-MM-dd HH:mm:ss")
@ColumnWidth(30)
private Date createTime;
@ApiModelProperty("认领人ID")
@ExcelIgnore
private String claimUserId;
@ApiModelProperty("认领人姓名")
@ExcelProperty(value = "认领人姓名", order = 17)
@ColumnWidth(30)
private String claimUserName;
@ApiModelProperty("认领时间")
@ExcelProperty(value = "认领时间", order = 18)
@DateTimeFormat("yyyy-MM-dd HH:mm:ss")
@ColumnWidth(30)
private Date claimTime;
@ApiModelProperty("费用单类型 1-费用单 2-调整单")
private Integer expenseSheetType;
@ApiModelProperty("合同附件信息")
private String contractAttachmentInfo;
@ApiModelProperty("关联银行流水号")
@ExcelProperty(value = "关联银行流水号", order = 19,converter = StringListConverter.class)
@ColumnWidth(30)
private List<String> tradeNoList;
@ApiModelProperty("支付时间")
@ExcelProperty(value = "支付时间", order = 20)
@DateTimeFormat("yyyy-MM-dd HH:mm:ss")
@ColumnWidth(30)
private Date payTime;
@ApiModelProperty("费用单类型 1-费用单 2-调整单")
@ExcelIgnore
private Integer expenseSheetType;
public String getAdjustTypeName() {
AdjustTypeEnum adjustTypeEnum = AdjustTypeEnum.fromCode(this.adjustType);
return adjustTypeEnum!=null?adjustTypeEnum.getDesc():"";
}
public String getStatusName() {
DocStatusEnum docStatusEnum = DocStatusEnum.fromStatus(this.status);
return docStatusEnum!=null?docStatusEnum.getDesc():"";
}
}

View File

@@ -1,9 +1,15 @@
package com.cool.store.response;
import com.alibaba.excel.annotation.ExcelIgnore;
import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.format.DateTimeFormat;
import com.alibaba.excel.annotation.write.style.ColumnWidth;
import com.cool.store.annotation.DictField;
import com.cool.store.enums.wallet.SplitSourceEnum;
import com.cool.store.enums.wallet.SplitTypeEnum;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.persistence.Column;
import java.math.BigDecimal;
import java.io.Serializable;
import java.util.Date;
@@ -12,74 +18,142 @@ import java.util.Date;
public class SplitOrderResponse implements Serializable {
@ApiModelProperty("主键ID")
@ExcelIgnore
private Long id;
@ApiModelProperty("分账单号")
@ExcelProperty(value = "分账单号", order = 10)
@ColumnWidth(30)
private String splitNo;
@ApiModelProperty("分账类型1-门店付款/2-门店收款/3-公司间结算)")
@ExcelIgnore
private Integer splitType;
@ApiModelProperty("分账类型名称1-门店付款/2-门店收款/3-公司间结算)")
@ExcelProperty(value = "分账类型名称", order = 20)
@ColumnWidth(30)
private String splitTypeName;
@ApiModelProperty("关联门店")
@ExcelIgnore
private String relatedStoreId;
@ApiModelProperty("门店名称")
@ExcelProperty(value = "门店名称", order = 30)
@ColumnWidth(30)
private String storeName;
@ApiModelProperty("门店编码")
@ExcelProperty(value = "门店编码", order = 40)
@ColumnWidth(30)
private String storeNum;
@ApiModelProperty("付款账户名称")
@ExcelProperty(value = "付款账户名称", order = 50)
@ColumnWidth(30)
private String payerAccountName;
@ApiModelProperty("付款账户")
@ExcelProperty(value = "付款账户", order = 60)
@ColumnWidth(30)
private String payerAccountNo;
@ApiModelProperty("收款账户")
private String payeeAccountNo;
@ApiModelProperty("分账失败原因")
private String failReason;
@ApiModelProperty("收款账户名称")
@ExcelProperty(value = "收款账户名称", order = 70)
@ColumnWidth(30)
private String payeeAccountName;
@ApiModelProperty("收款账户")
@ExcelProperty(value = "收款账户", order = 80)
@ColumnWidth(30)
private String payeeAccountNo;
@ApiModelProperty("费用类型")
@ExcelIgnore
private String expenseTypeCode;
@ApiModelProperty("费用类型名称")
@DictField(sourceField = "expenseTypeCode")
@ExcelProperty(value = "费用类型名称", order = 100)
@ColumnWidth(30)
private String expenseTypeName;
@ApiModelProperty("分账金额")
@ExcelProperty(value = "分账金额", order = 110)
@ColumnWidth(30)
private BigDecimal splitAmount;
@ApiModelProperty("关联单据号(如费用调整单号)")
@ExcelProperty(value = "关联单据号", order = 120)
@ColumnWidth(30)
private String relatedDocNo;
@ApiModelProperty("备注")
@ExcelProperty(value = "备注", order = 130)
@ColumnWidth(30)
private String remark;
@ApiModelProperty("状态(待分账/已完成)")
@ExcelIgnore
private Integer status;
@ApiModelProperty("状态名称(待分账/已完成)")
@ExcelProperty(value = "状态", order = 140)
@ColumnWidth(30)
private Integer statusName;
@ApiModelProperty("分账失败原因")
@ExcelProperty(value = "分账失败原因", order = 150)
@ColumnWidth(30)
private String failReason;
@ApiModelProperty("确认人")
@ExcelIgnore
private String confirmer;
@ApiModelProperty("确认人姓名")
@ExcelProperty(value = "确认人姓名", order = 160)
@ColumnWidth(30)
private String confirmerName;
@ApiModelProperty("确认时间")
@ExcelProperty(value = "确认时间", order = 170)
@DateTimeFormat("yyyy-MM-dd HH:mm:ss")
@ColumnWidth(30)
private Date confirmTime;
@ApiModelProperty("创建人")
@ExcelIgnore
private String createUserId;
@ApiModelProperty("创建人姓名")
@ExcelProperty(value = "创建人姓名", order = 180)
@ColumnWidth(30)
private String createUserName;
@ApiModelProperty("创建时间")
@ExcelProperty(value = "创建时间", order = 190)
@DateTimeFormat("yyyy-MM-dd HH:mm:ss")
@ColumnWidth(30)
private Date createTime;
@ApiModelProperty("单据来源1-手工新增/2-费用调整单/3-费用单)")
@ExcelIgnore
private Integer source;
@ApiModelProperty("单据来源名称1-手工新增/2-费用调整单/3-费用单)")
@ExcelProperty(value = "单据来源名称", order = 200)
@ColumnWidth(30)
private String sourceName;
public String getSplitTypeName() {
SplitTypeEnum splitTypeEnum = SplitTypeEnum.fromStatus(this.splitType);
return splitTypeEnum!=null?splitTypeEnum.getDesc():"-";
}
public String getSourceName() {
SplitSourceEnum splitSourceEnum = SplitSourceEnum.fromStatus(this.source);
return splitSourceEnum!=null?splitSourceEnum.getDesc():"-";
}
}

View File

@@ -47,9 +47,9 @@ public interface AdjustmentOrderService {
* @param request 分页查询请求
* @return 分页结果
*/
PageInfo<AdjustmentOrderResponse> page(AdjustmentOrderPageRequest request);
PageInfo<AdjustmentOrderResponse> page(AdjustmentOrderPageRequest request,String userId);
PageInfo<AdjustmentOrderResponse> getSpecialStatusData(AdjustmentSpecialPageRequest request);
PageInfo<AdjustmentOrderResponse> getSpecialStatusData(AdjustmentSpecialPageRequest request,LoginUserInfo userInfo);
/**
@@ -80,7 +80,12 @@ public interface AdjustmentOrderService {
*/
Boolean confirmRecharge(ConfirmRechargeRequest request);
/**
* 分页查询总数
* @param request 分页查询请求
* @return 记录总数
*/
Long pageCount(AdjustmentOrderPageRequest request,LoginUserInfo user);
}

View File

@@ -2,12 +2,10 @@ package com.cool.store.service;
import com.cool.store.dto.pre.fry.ApplyManagementDTO;
import com.cool.store.entity.ImportTaskDO;
import com.cool.store.request.AllPointPageRequest;
import com.cool.store.request.FranchiseReportRequest;
import com.cool.store.request.*;
import com.cool.store.request.order.PCStoreOrderQueryRequest;
import com.cool.store.request.tp.TpScoreJournalQueryRequest;
import com.cool.store.request.visit.VisitRecordQueryRequest;
import com.cool.store.request.PointPageRequest;
import com.cool.store.request.visit.VisitRecordQueryRequest;
import com.cool.store.response.BranchShopResponse;
import com.cool.store.response.FranchiseReportResponse;
@@ -60,4 +58,25 @@ public interface ExportRealizeService {
* @param importTaskDO 导出任务
*/
void exportTpScoreJournal(TpScoreJournalQueryRequest request, ImportTaskDO importTaskDO);
/**
* 费用调整单导出
* @param request 查询Request
* @param importTaskDO 导出任务
*/
void exportAdjustmentOrder(AdjustmentOrderPageRequest request, ImportTaskDO importTaskDO);
/**
* 费用单导出
* @param request 查询Request
* @param importTaskDO 导出任务
*/
void exportExpenseOrder(AdjustmentOrderPageRequest request, ImportTaskDO importTaskDO);
/**
* 分账单导出
* @param request 查询Request
* @param importTaskDO 导出任务
*/
void exportSplitOrder(SplitOrderPageRequest request, ImportTaskDO importTaskDO);
}

View File

@@ -94,4 +94,28 @@ public interface ExportService {
* @return 记录总数
*/
Long exportTpScoreJournal(TpScoreJournalQueryRequest request, LoginUserInfo user);
/**
* 费用调整单导出
* @param request 查询Request
* @param user 当前用户
* @return 记录总数
*/
Long exportAdjustmentOrder(AdjustmentOrderPageRequest request, LoginUserInfo user);
/**
* 费用单导出
* @param request 查询Request
* @param user 当前用户
* @return 记录总数
*/
Long exportExpenseOrder(AdjustmentOrderPageRequest request, LoginUserInfo user);
/**
* 分账单导出
* @param request 查询Request
* @param user 当前用户
* @return 记录总数
*/
Long exportSplitOrder(SplitOrderPageRequest request, LoginUserInfo user);
}

View File

@@ -76,4 +76,11 @@ public interface SplitOrderService {
* @param walletTradeDO
*/
Boolean updateWalletTrade(WalletTradeDO walletTradeDO);
/**
* 分页查询总数
* @param request 分页查询请求
* @return 记录总数
*/
Long pageCount(SplitOrderPageRequest request);
}

View File

@@ -19,9 +19,11 @@ import com.cool.store.request.wallet.ConfirmRechargeRequest;
import com.cool.store.request.wallet.OutStoreIdRequest;
import com.cool.store.response.AdjustmentOrderResponse;
import com.cool.store.service.AdjustmentOrderService;
import com.cool.store.service.UserAuthMappingService;
import com.cool.store.service.dict.impl.DictService;
import com.cool.store.service.wallet.WalletApiService;
import com.cool.store.utils.GenerateNoUtil;
import com.cool.store.vo.login.UserLoginVO;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import lombok.extern.slf4j.Slf4j;
@@ -175,12 +177,22 @@ public class AdjustmentOrderServiceImpl implements AdjustmentOrderService {
return buildResponse(adjustmentOrder);
}
@Resource
UserAuthMappingService userAuthMappingService;
@Resource
EnterpriseUserRoleDao enterpriseUserRoleDao;
@Override
public PageInfo<AdjustmentOrderResponse> page(AdjustmentOrderPageRequest request) {
public PageInfo<AdjustmentOrderResponse> page(AdjustmentOrderPageRequest request, String userId) {
List<String> regionIds = new ArrayList<>();
Boolean isAdmin = enterpriseUserRoleDao.checkIsAdmin(userId);
//非管理员根据管辖权限查询 管理员查所有
if (StringUtils.isNotEmpty(userId)&&!isAdmin){
regionIds = userAuthMappingService.getAuthRegionIdAndSubRegionIdByUserId(userId);
request.setRegionIds(regionIds);
}
PageHelper.startPage(request.getPageNum(), request.getPageSize());
List<AdjustmentOrderResponse> list = adjustmentOrderDAO.pageQuery(request);
dictService.fillDictField(list);
// 批量查询交易流水号
if (CollectionUtils.isNotEmpty(list)) {
@@ -224,7 +236,7 @@ public class AdjustmentOrderServiceImpl implements AdjustmentOrderService {
}
@Override
public PageInfo<AdjustmentOrderResponse> getSpecialStatusData(AdjustmentSpecialPageRequest request) {
public PageInfo<AdjustmentOrderResponse> getSpecialStatusData(AdjustmentSpecialPageRequest request,LoginUserInfo userInfo) {
AdjustmentOrderPageRequest convert = AdjustmentSpecialPageRequest.convert(request);
//只查询指定的状态
List<Integer> statusList = convert.getStatusList();
@@ -235,7 +247,7 @@ public class AdjustmentOrderServiceImpl implements AdjustmentOrderService {
statusList.addAll(list);
}
convert.setStatusList(statusList);
return page(convert);
return page(convert,userInfo.getUserId());
}
@@ -404,6 +416,18 @@ public class AdjustmentOrderServiceImpl implements AdjustmentOrderService {
return Boolean.TRUE;
}
@Override
public Long pageCount(AdjustmentOrderPageRequest request,LoginUserInfo user) {
List<String> regionIds = new ArrayList<>();
Boolean isAdmin = enterpriseUserRoleDao.checkIsAdmin(user.getUserId());
//非管理员根据管辖权限查询 管理员查所有
if (StringUtils.isNotEmpty(user.getUserId())&&!isAdmin){
regionIds = userAuthMappingService.getAuthRegionIdAndSubRegionIdByUserId(user.getUserId());
request.setRegionIds(regionIds);
}
return adjustmentOrderDAO.pageCount(request);
}
/**
* 构建响应对象
*/

View File

@@ -13,16 +13,12 @@ import com.cool.store.enums.*;
import com.cool.store.enums.point.*;
import com.cool.store.exception.ServiceException;
import com.cool.store.mapper.*;
import com.cool.store.request.AllPointPageRequest;
import com.cool.store.request.FranchiseReportRequest;
import com.cool.store.request.*;
import com.cool.store.request.order.PCStoreOrderQueryRequest;
import com.cool.store.request.tp.TpScoreJournalQueryRequest;
import com.cool.store.request.visit.VisitRecordQueryRequest;
import com.cool.store.request.PointPageRequest;
import com.cool.store.request.visit.VisitRecordQueryRequest;
import com.cool.store.response.BranchShopResponse;
import com.cool.store.response.FranchiseReportResponse;
import com.cool.store.response.ShopReportResponse;
import com.cool.store.response.*;
import com.cool.store.service.*;
import com.cool.store.service.dict.impl.DictService;
import com.cool.store.service.order.MiniStoreOrderService;
@@ -48,6 +44,7 @@ import com.cool.store.vo.visit.VisitRecordListVO;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.github.pagehelper.PageInfo;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.ObjectUtils;
@@ -139,6 +136,10 @@ public class ExportRealizeServiceImpl implements ExportRealizeService {
private TpScoreJournalService tpScoreJournalService;
@Resource
private DictService dictService;
@Resource
AdjustmentOrderService adjustmentOrderService;
@Resource
SplitOrderService splitOrderService;
@Override
@Async
@@ -944,5 +945,88 @@ public class ExportRealizeServiceImpl implements ExportRealizeService {
redisUtilPool.delKey(RedisConstant.TP_SCORE_JOURNAL_EXPORT_LOCK);
}
}
@Override
@Async("generalThreadPool")
public void exportAdjustmentOrder(AdjustmentOrderPageRequest request, ImportTaskDO importTaskDO) {
String url = "";
try {
url = easyExcelUtil.exportExcelInBatches(AdjustmentOrderResponse.class,
(pageNum, pageSize) -> {
request.setPageNum(pageNum);
request.setPageSize(pageSize);
request.setExpenseSheetType(2);
PageInfo<AdjustmentOrderResponse> pageInfo = adjustmentOrderService.page(request,importTaskDO.getCreateUserId());
List<AdjustmentOrderResponse> list = pageInfo.getList();
dictService.fillDictField(list);
return list;
},
FileTypeEnum.ADJUSTMENT_ORDER_EXPORT.getDesc(),
FileTypeEnum.ADJUSTMENT_ORDER_EXPORT.getDesc());
importTaskDO.setStatus(ImportStatusEnum.success.getCode());
} catch (Exception e) {
log.error("费用调整单导出失败,{}", e);
importTaskDO.setStatus(ImportStatusEnum.fail.getCode());
} finally {
importTaskDO.setFileUrl(url);
importTaskMapper.update(eid, importTaskDO);
redisUtilPool.delKey(RedisConstant.ADJUSTMENT_ORDER_EXPORT_LOCK);
}
}
@Override
@Async("generalThreadPool")
public void exportExpenseOrder(AdjustmentOrderPageRequest request, ImportTaskDO importTaskDO) {
String url = "";
try {
url = easyExcelUtil.exportExcelInBatches(AdjustmentOrderResponse.class,
(pageNum, pageSize) -> {
request.setPageNum(pageNum);
request.setPageSize(pageSize);
request.setExpenseSheetType(1);
PageInfo<AdjustmentOrderResponse> pageInfo = adjustmentOrderService.page(request,importTaskDO.getCreateUserId());
List<AdjustmentOrderResponse> list = pageInfo.getList();
dictService.fillDictField(list);
return list;
},
FileTypeEnum.EXPENSE_ORDER_EXPORT.getDesc(),
FileTypeEnum.EXPENSE_ORDER_EXPORT.getDesc());
importTaskDO.setStatus(ImportStatusEnum.success.getCode());
} catch (Exception e) {
log.error("费用单导出失败", e);
importTaskDO.setStatus(ImportStatusEnum.fail.getCode());
} finally {
importTaskDO.setFileUrl(url);
importTaskMapper.update(eid, importTaskDO);
redisUtilPool.delKey(RedisConstant.EXPENSE_ORDER_EXPORT_LOCK);
}
}
@Override
@Async("generalThreadPool")
public void exportSplitOrder(SplitOrderPageRequest request, ImportTaskDO importTaskDO) {
String url = "";
try {
url = easyExcelUtil.exportExcelInBatches(SplitOrderResponse.class,
(pageNum, pageSize) -> {
request.setPageNum(pageNum);
request.setPageSize(pageSize);
PageInfo<SplitOrderResponse> pageInfo = splitOrderService.page(request);
List<SplitOrderResponse> list = pageInfo.getList();
dictService.fillDictField(list);
return list;
},
FileTypeEnum.SPLIT_ORDER_EXPORT.getDesc(),
FileTypeEnum.SPLIT_ORDER_EXPORT.getDesc());
importTaskDO.setStatus(ImportStatusEnum.success.getCode());
} catch (Exception e) {
log.error("分账单导出失败", e);
importTaskDO.setStatus(ImportStatusEnum.fail.getCode());
} finally {
importTaskDO.setFileUrl(url);
importTaskMapper.update(eid, importTaskDO);
redisUtilPool.delKey(RedisConstant.SPLIT_ORDER_EXPORT_LOCK);
}
}
}

View File

@@ -10,9 +10,6 @@ import com.cool.store.dao.PreFryQualificationApplyDAO;
import com.cool.store.dao.ShopInfoDAO;
import com.cool.store.dao.order.StoreOrderDAO;
import com.cool.store.dao.visit.VisitRecordDAO;
import com.cool.store.dto.Preparation.PreparationDTO;
import com.cool.store.dto.Preparation.ScheduleDTO;
import com.cool.store.dao.visit.VisitRecordDAO;
import com.cool.store.dto.pre.fry.ApplyManagementDTO;
import com.cool.store.dto.pre.fry.ApplyManagementQueryDTO;
import com.cool.store.entity.*;
@@ -41,7 +38,6 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
@@ -93,6 +89,10 @@ public class ExportServiceImpl implements ExportService {
private PointService pointService;
@Resource
private TpScoreJournalService tpScoreJournalService;
@Resource
private AdjustmentOrderService adjustmentOrderService;
@Resource
private SplitOrderService splitOrderService;
@@ -380,5 +380,86 @@ public class ExportServiceImpl implements ExportService {
return count;
}
@Override
public Long exportAdjustmentOrder(AdjustmentOrderPageRequest request, LoginUserInfo user) {
Long count = adjustmentOrderService.pageCount(request,user);
if (count.intValue() > CommonConstants.MAX_EXPORT_SIZE_PRO) {
throw new ServiceException(ErrorCodeEnum.EXPORT_LIMIT_100000);
}
if (Long.valueOf(0).equals(count)) {
log.error("导出数据为空");
return 0L;
}
boolean lock = redisUtilPool.setNxExpire(RedisConstant.ADJUSTMENT_ORDER_EXPORT_LOCK, RedisConstant.ADJUSTMENT_ORDER_EXPORT_LOCK, 30 * 60 * 1000);
if (!lock) {
throw new ServiceException(ErrorCodeEnum.EXPORT_TASK_LIMIT);
}
ImportTaskDO importTaskDO = new ImportTaskDO();
importTaskDO.setStatus(ImportStatusEnum.Ongoing.getCode());
importTaskDO.setFileName(FileTypeEnum.ADJUSTMENT_ORDER_EXPORT.getDesc() + DateUtils.parseDateToStr(DateUtils.SPECIAL_DATE_START_1, new Date()));
importTaskDO.setIsImport(Boolean.FALSE);
importTaskDO.setFileType(FileTypeEnum.ADJUSTMENT_ORDER_EXPORT.getFileType());
importTaskDO.setCreateUserId(user.getUserId());
importTaskDO.setCreateTime(new Date().getTime());
importTaskDO.setCreateName(user.getName());
importTaskMapper.insert(eid, importTaskDO);
exportRealizeService.exportAdjustmentOrder(request, importTaskDO);
return count;
}
@Override
public Long exportExpenseOrder(AdjustmentOrderPageRequest request, LoginUserInfo user) {
Long count = adjustmentOrderService.pageCount(request,user);
if (count.intValue() > CommonConstants.MAX_EXPORT_SIZE_PRO) {
throw new ServiceException(ErrorCodeEnum.EXPORT_LIMIT_100000);
}
if (Long.valueOf(0).equals(count)) {
log.error("导出数据为空");
return 0L;
}
boolean lock = redisUtilPool.setNxExpire(RedisConstant.EXPENSE_ORDER_EXPORT_LOCK, RedisConstant.EXPENSE_ORDER_EXPORT_LOCK, 30 * 60 * 1000);
if (!lock) {
throw new ServiceException(ErrorCodeEnum.EXPORT_TASK_LIMIT);
}
ImportTaskDO importTaskDO = new ImportTaskDO();
importTaskDO.setStatus(ImportStatusEnum.Ongoing.getCode());
importTaskDO.setFileName(FileTypeEnum.EXPENSE_ORDER_EXPORT.getDesc() + DateUtils.parseDateToStr(DateUtils.SPECIAL_DATE_START_1, new Date()));
importTaskDO.setIsImport(Boolean.FALSE);
importTaskDO.setFileType(FileTypeEnum.EXPENSE_ORDER_EXPORT.getFileType());
importTaskDO.setCreateUserId(user.getUserId());
importTaskDO.setCreateTime(new Date().getTime());
importTaskDO.setCreateName(user.getName());
importTaskMapper.insert(eid, importTaskDO);
exportRealizeService.exportExpenseOrder(request, importTaskDO);
return count;
}
@Override
public Long exportSplitOrder(SplitOrderPageRequest request, LoginUserInfo user) {
Long count = splitOrderService.pageCount(request);
if (count.intValue() > CommonConstants.MAX_EXPORT_SIZE_PRO) {
throw new ServiceException(ErrorCodeEnum.EXPORT_LIMIT_100000);
}
if (Long.valueOf(0).equals(count)) {
log.error("导出数据为空");
return 0L;
}
boolean lock = redisUtilPool.setNxExpire(RedisConstant.SPLIT_ORDER_EXPORT_LOCK, RedisConstant.SPLIT_ORDER_EXPORT_LOCK, 30 * 60 * 1000);
if (!lock) {
throw new ServiceException(ErrorCodeEnum.EXPORT_TASK_LIMIT);
}
ImportTaskDO importTaskDO = new ImportTaskDO();
importTaskDO.setStatus(ImportStatusEnum.Ongoing.getCode());
importTaskDO.setFileName(FileTypeEnum.SPLIT_ORDER_EXPORT.getDesc() + DateUtils.parseDateToStr(DateUtils.SPECIAL_DATE_START_1, new Date()));
importTaskDO.setIsImport(Boolean.FALSE);
importTaskDO.setFileType(FileTypeEnum.SPLIT_ORDER_EXPORT.getFileType());
importTaskDO.setCreateUserId(user.getUserId());
importTaskDO.setCreateTime(new Date().getTime());
importTaskDO.setCreateName(user.getName());
importTaskMapper.insert(eid, importTaskDO);
exportRealizeService.exportSplitOrder(request, importTaskDO);
return count;
}
}

View File

@@ -318,6 +318,11 @@ public class SplitOrderServiceImpl implements SplitOrderService {
return null;
}
@Override
public Long pageCount(SplitOrderPageRequest request) {
return splitOrderDAO.pageCount(request);
}
/**
* 构建响应对象

View File

@@ -63,7 +63,7 @@ public class SyncMainSysServerImpl implements SyncMainSysServer {
private WalletApiService walletApiService;
@Override
@Async
@Async("generalThreadPool")
public void syncStore(Long shopId) {
log.info("开始同步门店 syncStore:{}", shopId);
addStore(shopId);
@@ -133,7 +133,7 @@ public class SyncMainSysServerImpl implements SyncMainSysServer {
String endMillis = String.valueOf(endTime.toSecondOfDay() * 1000L);
storeMasterDTO.setBusinessHours(startMillis + "," + endMillis);
} catch (Exception e) {
log.info("时间转换异常:{},shopId:{},time:{}", e.getMessage(), shopId.toString(), buildInformationDO.getBusinessHours());
log.info("时间转换异常 shopId:{},time:{}", shopId.toString(), buildInformationDO.getBusinessHours(),e);
}
}
StoreMasterDTO.SettlerInfo settlerInfo = new StoreMasterDTO.SettlerInfo();
@@ -179,7 +179,7 @@ public class SyncMainSysServerImpl implements SyncMainSysServer {
storeMasterDTO.setMonthlyRent(monthlyRent);
}
} catch (Exception e) {
log.info("月租转换异常:{},shopId:{},time:{}", e.getMessage(), shopId.toString(), pointDetail.getMonthRent());
log.error("月租转换异常 shopId:{},time:{}", shopId.toString(), pointDetail.getMonthRent(),e);
}
}
}
@@ -212,7 +212,7 @@ public class SyncMainSysServerImpl implements SyncMainSysServer {
// 推送营帐通
pushStoreToYzt(shopInfo, lineInfoDO);
} catch (Exception e) {
log.info("asdStore_error:{},shopId:{}", e.getMessage(), shopId.toString());
log.error("asdStore_error: shopId:{}", shopId.toString(), e);
}
}

View File

@@ -1,6 +1,7 @@
package com.cool.store.controller.webb;
import com.cool.store.context.CurrentUserHolder;
import com.cool.store.context.LoginUserInfo;
import com.cool.store.request.*;
import com.cool.store.response.AdjustmentOrderResponse;
import com.cool.store.response.ResponseResult;
@@ -61,13 +62,13 @@ public class AdjustmentOrderController {
@PostMapping("/page")
@ApiOperation("分页查询费用调整单")
public ResponseResult<PageInfo<AdjustmentOrderResponse>> page(@RequestBody AdjustmentOrderPageRequest request) {
return ResponseResult.success(adjustmentOrderService.page(request));
return ResponseResult.success(adjustmentOrderService.page(request,CurrentUserHolder.getUserId()));
}
@PostMapping("/getSpecialStatusData")
@ApiOperation("选择关联费用单费用调整单列表")
public ResponseResult<PageInfo<AdjustmentOrderResponse>> getSpecialStatusData(@RequestBody AdjustmentSpecialPageRequest request) {
return ResponseResult.success(adjustmentOrderService.getSpecialStatusData(request));
return ResponseResult.success(adjustmentOrderService.getSpecialStatusData(request, CurrentUserHolder.getUser()));
}

View File

@@ -108,4 +108,22 @@ public class ExportController {
public ResponseResult<Long> tpScoreJournalExport(@RequestBody TpScoreJournalQueryRequest request) {
return ResponseResult.success(exportService.exportTpScoreJournal(request, CurrentUserHolder.getUser()));
}
@PostMapping("/adjustmentOrderExport")
@ApiOperation("费用调整单导出")
public ResponseResult<Long> adjustmentOrderExport(@RequestBody AdjustmentOrderPageRequest request) {
return ResponseResult.success(exportService.exportAdjustmentOrder(request, CurrentUserHolder.getUser()));
}
@PostMapping("/expenseOrderExport")
@ApiOperation("费用单导出")
public ResponseResult<Long> expenseOrderExport(@RequestBody AdjustmentOrderPageRequest request) {
return ResponseResult.success(exportService.exportExpenseOrder(request, CurrentUserHolder.getUser()));
}
@PostMapping("/splitOrderExport")
@ApiOperation("分账单导出")
public ResponseResult<Long> splitOrderExport(@RequestBody SplitOrderPageRequest request) {
return ResponseResult.success(exportService.exportSplitOrder(request, CurrentUserHolder.getUser()));
}
}

View File

@@ -45,7 +45,7 @@ public class MiniAdjustmentOrderController {
@PostMapping("/page")
@ApiOperation("分页查询费用调整单")
public ResponseResult<PageInfo<AdjustmentOrderResponse>> page(@RequestBody AdjustmentOrderPageRequest request) {
return ResponseResult.success(adjustmentOrderService.page(request));
return ResponseResult.success(adjustmentOrderService.page(request,null));
}