Browse Source

售后报表

master
fanzongzhe 7 months ago
parent
commit
ecfbf9b368
  1. 92
      yxt-as/src/main/java/com/yxt/anrui/as/api/asbusrepairbill/report/BusinessDetailsQuery.java
  2. 128
      yxt-as/src/main/java/com/yxt/anrui/as/api/asbusrepairbill/report/BusinessDetailsVo.java
  3. 2
      yxt-as/src/main/java/com/yxt/anrui/as/biz/asbusrepairbill/AsBusrepairBillMapper.java
  4. 46
      yxt-as/src/main/java/com/yxt/anrui/as/biz/asbusrepairbill/AsBusrepairBillMapper.xml
  5. 7
      yxt-as/src/main/java/com/yxt/anrui/as/biz/asbusrepairbill/AsBusrepairBillRest.java
  6. 96
      yxt-as/src/main/java/com/yxt/anrui/as/biz/asbusrepairbill/AsBusrepairBillService.java

92
yxt-as/src/main/java/com/yxt/anrui/as/api/asbusrepairbill/report/BusinessDetailsQuery.java

@ -0,0 +1,92 @@
package com.yxt.anrui.as.api.asbusrepairbill.report;
import com.yxt.common.core.query.Query;
import lombok.Data;
/**
* @author Fan
* @description
* @date 2024/11/13 14:30
*/
@Data
public class BusinessDetailsQuery implements Query {
private String billNo;
private String vinNo;
/**
* 车牌号
*/
private String vehMark;
/**
* 维修类型
*/
private String billType;
/**
* 单据类型
*/
private String busType;
/**
* 单据编号
*/
private String createEndTime;
/**
* 客户
*/
private String customer;
/**
* 1本日2本月3本年
*/
private String dateType;
/**
* 欠款区间结束
*/
private String debtEnd;
/**
* 欠款区间开始
*/
private String debtStart;
/**
* 对接人
*/
private String dockingPeople;
private String menuUrl;
private String orgPath;
/**
* 超期天数区间结束
*/
private String overdueEndDay;
/**
* 超期天数区间开始
*/
private String overdueStartDay;
/**
* 承诺交款日期结束
*/
private String paymentEndDate;
/**
* 承诺交款日期开始
*/
private String paymentStartDate;
/**
* 车架号
*/
private String serviceType;
/**
* 结算结束
*/
private String settleEndTime;
/**
* 结算开始
*/
private String settleStartTime;
/**
* 科目
*/
private String subject;
private String userSid;
/**
* 服务顾问
*/
private String waitorName;
}

128
yxt-as/src/main/java/com/yxt/anrui/as/api/asbusrepairbill/report/BusinessDetailsVo.java

@ -0,0 +1,128 @@
package com.yxt.anrui.as.api.asbusrepairbill.report;
import com.yxt.common.core.vo.Vo;
import lombok.Data;
/**
* @author Fan
* @description
* @date 2024/11/13 14:30
*/
@Data
public class BusinessDetailsVo implements Vo {
/**
* 附加费
*/
private String addAmount;
/**
* 单据编号
*/
private String billNo;
/**
* 维修类型
*/
private String billType;
/**
* 单据类型
*/
private String busType;
/**
* 成本合计
*/
private String costTotal;
/**
* 开单时间
*/
private String createTime;
/**
* 客户
*/
private String customerName;
/**
* 欠款
*/
private String debt;
/**
* 门店
*/
private String deptName;
/**
* 对接人
*/
private String dockingPeople;
/**
* 竣工时间
*/
private String finishTime;
/**
* 材料费
*/
private String goodsAmount;
/**
* 材料成本
*/
private String goodsAmountCost;
/**
* 工时费
*/
private String hourAmount;
/**
* 工时成本
*/
private String hourAmountCost;
/**
* 其他附加
*/
private String otherAmount;
/**
* 其他附加项目成本
*/
private String otherAmountCost;
/**
* 超期天数
*/
private String overDueDays;
/**
* 承诺回款日期
*/
private String paymentDate;
/**
* 利润
*/
private String profit;
/**
* 已交款
*/
private String receivedAmount;
/**
* 结算时间
*/
private String settleTime;
/**
* 科目
*/
private String subject;
/**
* 合计
*/
private String totalAmount;
/**
* 分公司
*/
private String useOrgName;
/**
* 车牌号
*/
private String vehMark;
/**
* 车架号
*/
private String vinNo;
/**
* 服务顾问
*/
private String waitorName;
}

2
yxt-as/src/main/java/com/yxt/anrui/as/biz/asbusrepairbill/AsBusrepairBillMapper.java

@ -76,4 +76,6 @@ public interface AsBusrepairBillMapper extends BaseMapper<AsBusrepairBill> {
IPage<OutInsuranceBusinessVo> outInsuranceBusiness(IPage<AsBusrepairBill> page, @Param(Constants.WRAPPER) QueryWrapper<AsBusrepairBill> qw);
IPage<DebtBusinessVo> debtBusiness(IPage<AsBusrepairBill> page, @Param(Constants.WRAPPER) QueryWrapper<AsBusrepairBill> qw);
IPage<BusinessDetailsVo> businessDetails(IPage<AsBusrepairBill> page, @Param(Constants.WRAPPER) QueryWrapper<AsBusrepairBill> qw);
}

46
yxt-as/src/main/java/com/yxt/anrui/as/biz/asbusrepairbill/AsBusrepairBillMapper.xml

@ -786,4 +786,50 @@
${ew.sqlSegment}
</where>
</select>
<select id="businessDetails" resultType="com.yxt.anrui.as.api.asbusrepairbill.report.BusinessDetailsVo">
SELECT * FROM
(SELECT n.*,
(n.hourAmount + n.goodsAmount + n.otherAmount + n.addAmount) totalAmount,
(n.hourAmountCost + n.goodsAmountCost + n.otherAmountCost) costTotal,
((n.hourAmount + n.goodsAmount + n.otherAmount + n.addAmount) - (n.hourAmountCost + n.goodsAmountCost + n.otherAmountCost)) profit,
IF(n.debt > 0, ( DATEDIFF( NOW(), n.paymentDate )), '0') overDueDays
FROM
(SELECT
a.orgSidPath,
a.useOrgName,
a.deptName,
a.billNo,
date_format (a.createTime,'%Y-%m-%d') createTime,
date_format (a.finishTime,'%Y-%m-%d') finishTime,
date_format (a.settleTime,'%Y-%m-%d') settleTime,
'维修工单' busType,
a.billType,
a.`subject`,
a.customerName,
v.vehMark,
v.vinNo,
IFNULL(a.hourAmount,0) hourAmount,
((SELECT IFNULL(SUM(IFNULL(d.amount,0)),0) FROM as_busrepair_inventorybill_detail as d LEFT JOIN as_busrepair_inventorybill as ab ON d.billSid = ab.sid WHERE ab.sourceBillSid = a.sid and ab.busTypeKey = 0) - (SELECT IFNULL(SUM(IFNULL(d.amount,0)),0) FROM as_busrepair_inventorybill_detail as d LEFT JOIN as_busrepair_inventorybill as ab ON d.billSid = ab.sid WHERE ab.sourceBillSid = a.sid and ab.busTypeKey = 1)) goodsAmount,
IFNULL(a.addAmount,0) otherAmount,
IFNULL(a.outAmount,0) + IFNULL(a.subsidyAmount,0) + IFNULL(a.rescueAmount,0) addAmount,
(SELECT IFNULL(SUM(IFNULL(s.costTotal,0)),0) FROM as_busrepair_bill_sitem as s WHERE s.billSid = a.sid) as hourAmountCost,
((SELECT IFNULL(SUM(IFNULL(d.costTotal,0)),0) FROM as_busrepair_inventorybill_detail as d LEFT JOIN as_busrepair_inventorybill as ab ON d.billSid = ab.sid WHERE ab.sourceBillSid = a.sid and ab.busTypeKey = 0) - (SELECT IFNULL(SUM(IFNULL(d.costTotal,0)),0) FROM as_busrepair_inventorybill_detail as d LEFT JOIN as_busrepair_inventorybill as ab ON d.billSid = ab.sid WHERE ab.sourceBillSid = a.sid and ab.busTypeKey = 1)) goodsAmountCost,
((SELECT IFNULL(SUM(IFNULL(s.costTotal,0)),0) FROM as_busrepair_bill_aitem as s WHERE s.billSid = a.sid) + (SELECT IFNULL(SUM(IFNULL(s.costTotal,0)),0) FROM as_busrepair_bill_aitemspec as s WHERE s.billSid = a.sid)) otherAmountCost,
(SELECT IFNULL(SUM(sd.subscriptionMoney),0) FROM anrui_fin.fin_selected_receivables_detailed as sd LEFT JOIN anrui_fin.fin_uncollected_receivables_detailed as fd ON sd.receivablesSid
= fd.sid WHERE sd.auditState = '3' AND fd.contractSid = a.sid) receivedAmount,
((SELECT IFNULL(SUM(reveivableMoney),0) FROM anrui_fin.fin_uncollected_receivables_detailed as d WHERE d.contractSid = a.sid)
- (SELECT IFNULL(SUM(sd.subscriptionMoney),0) FROM anrui_fin.fin_selected_receivables_detailed as sd LEFT JOIN anrui_fin.fin_uncollected_receivables_detailed as fd ON sd.receivablesSid
= fd.sid WHERE sd.auditState = '3' AND fd.contractSid = a.sid)) debt,
date_format (aa.promisePaymentDate,'%Y-%m-%d') paymentDate,
a.dockingPeople,
a.waitorName
FROM
as_busrepair_bill AS a
LEFT JOIN as_busrepair_bill_vech as v ON a.sid = v.billSid
LEFT JOIN as_arrearsout_apply as aa ON a.sid = aa.pairBillSid) as n) m
<where>
${ew.sqlSegment}
</where>
</select>
</mapper>

7
yxt-as/src/main/java/com/yxt/anrui/as/biz/asbusrepairbill/AsBusrepairBillRest.java

@ -339,4 +339,11 @@ public class AsBusrepairBillRest {
return rb.success().setData(pv);
}
@PostMapping("/businessDetails")
@ApiOperation("营业明细")
ResultBean<PagerVo<BusinessDetailsVo>> businessDetails(@RequestBody PagerQuery<BusinessDetailsQuery> pq) {
ResultBean<PagerVo<BusinessDetailsVo>> rb = ResultBean.fireFail();
PagerVo<BusinessDetailsVo> pv = asBusrepairBillService.businessDetails(pq);
return rb.success().setData(pv);
}
}

96
yxt-as/src/main/java/com/yxt/anrui/as/biz/asbusrepairbill/AsBusrepairBillService.java

@ -2908,4 +2908,100 @@ public class AsBusrepairBillService extends MybatisBaseService<AsBusrepairBillMa
PagerVo<DebtBusinessVo> p = PagerUtil.pageToVo(pagging, null);
return p;
}
public PagerVo<BusinessDetailsVo> businessDetails(PagerQuery<BusinessDetailsQuery> pq) {
BusinessDetailsQuery query = pq.getParams();
QueryWrapper<AsBusrepairBill> qw = new QueryWrapper<>();
PrivilegeQuery privilegeQuery = new PrivilegeQuery();
privilegeQuery.setOrgPath(query.getOrgPath());
privilegeQuery.setUserSid(query.getUserSid());
privilegeQuery.setMenuUrl(query.getMenuUrl());
ResultBean<String> defaultIdReltBean = sysUserFeign.selectPrivilegeLevel(privilegeQuery);
if (StringUtils.isNotBlank(defaultIdReltBean.getData())) {
//数据权限ID(1集团、2事业部、3分公司、4部门、5个人)
String orgSidPath = query.getOrgPath();
orgSidPath = orgSidPath + "/";
int i1 = orgSidPath.indexOf("/");
int i2 = orgSidPath.indexOf("/", i1 + 1);
int i3 = orgSidPath.indexOf("/", i2 + 1);
int i4 = orgSidPath.indexOf("/", i3 + 1);
String orgLevelKey = defaultIdReltBean.getData();
if ("1".equals(orgLevelKey)) {
orgSidPath = orgSidPath.substring(0, i1);
qw.like("m.orgSidPath", orgSidPath);
} else if ("2".equals(orgLevelKey)) {
orgSidPath = orgSidPath.substring(0, i2);
qw.like("m.orgSidPath", orgSidPath);
} else if ("3".equals(orgLevelKey)) {
orgSidPath = orgSidPath.substring(0, i3);
qw.like("m.orgSidPath", orgSidPath);
} else if ("4".equals(orgLevelKey)) {
orgSidPath = orgSidPath.substring(0, i4);
qw.like("m.orgSidPath", orgSidPath);
} else if ("5".equals(orgLevelKey)) {
// qw.eq("a.createBySid", query.getUserSid());
} else {
PagerVo<BusinessDetailsVo> p = new PagerVo<>();
return p;
}
} else {
PagerVo<BusinessDetailsVo> p = new PagerVo<>();
return p;
}
if (StringUtils.isNotBlank(query.getDateType())) {
String dateType = query.getDateType();
if (dateType.equals("1")) {
//本日
qw.apply("m.settleTime = CURDATE()");
} else if (dateType.equals("2")) {
//本月
qw.apply("m.settleTime >= date_add(curdate(), interval - day(curdate()) + 1 day) AND m.settleTime <= last_day(curdate())");
} else if (dateType.equals("3")) {
//本年
qw.apply("m.settleTime >= date_sub(curdate(), interval dayofyear(curdate())-1 day) AND m.settleTime <= concat(year(curdate()),'-12-31')");
}
}
if (StringUtils.isNotBlank(query.getBillNo())) {
qw.like("m.billNo",query.getBillNo());
}
if (StringUtils.isNotBlank(query.getBusType())) {
qw.like("m.busType",query.getBusType());
}
if (StringUtils.isNotBlank(query.getBillType())) {
qw.like("m.billType",query.getBillType());
}
if (StringUtils.isNotBlank(query.getSubject())) {
qw.like("m.subject",query.getSubject());
}
if (StringUtils.isNotBlank(query.getCustomer())) {
qw.like("m.customerName",query.getCustomer());
}
if (StringUtils.isNotBlank(query.getVehMark())) {
qw.like("m.vehMark",query.getVehMark());
}
if (StringUtils.isNotBlank(query.getVinNo())) {
qw.like("m.vinNo",query.getVinNo());
}
if (StringUtils.isNotBlank(query.getDockingPeople())) {
qw.like("m.dockingPeople",query.getDockingPeople());
}
if (StringUtils.isNotBlank(query.getWaitorName())) {
qw.like("m.waitorName",query.getWaitorName());
}
//结算时间
qw.apply(StringUtils.isNotBlank(query.getSettleStartTime()), "date_format (m.settleTime,'%Y-%m-%d') >= date_format('" + query.getSettleStartTime() + "','%Y-%m-%d')").
apply(StringUtils.isNotBlank(query.getSettleEndTime()), "date_format (m.settleTime,'%Y-%m-%d') <= date_format('" + query.getSettleEndTime() + "','%Y-%m-%d')"
);
qw.apply(StringUtils.isNotBlank(query.getPaymentStartDate()), "date_format (m.paymentDate,'%Y-%m-%d') >= date_format('" + query.getPaymentStartDate() + "','%Y-%m-%d')").
apply(StringUtils.isNotBlank(query.getPaymentEndDate()), "date_format (m.paymentDate,'%Y-%m-%d') <= date_format('" + query.getPaymentEndDate() + "','%Y-%m-%d')"
);
qw.apply(StringUtils.isNotBlank(query.getOverdueStartDay()), "m.overDueDays >=" + query.getOverdueStartDay()).
apply(StringUtils.isNotBlank(query.getOverdueEndDay()), "m.overDueDays <=" + query.getOverdueEndDay()
);
IPage<AsBusrepairBill> page = PagerUtil.queryToPage(pq);
IPage<BusinessDetailsVo> pagging = baseMapper.businessDetails(page, qw);
PagerVo<BusinessDetailsVo> p = PagerUtil.pageToVo(pagging, null);
return p;
}
}

Loading…
Cancel
Save