2022-08-09 06:29:52 +00:00
package cn.palmte.work.service ;
2022-08-16 01:42:18 +00:00
import cn.palmte.work.bean.ResponseMsg ;
import cn.palmte.work.bean.StatusEnum ;
2022-08-09 06:29:52 +00:00
import cn.palmte.work.controller.backend.MonthlySettleController ;
2022-08-16 01:42:18 +00:00
import cn.palmte.work.model.* ;
import cn.palmte.work.utils.DateKit ;
import cn.palmte.work.utils.InterfaceUtil ;
import cn.palmte.work.utils.StrKit ;
2022-08-09 06:29:52 +00:00
import org.slf4j.Logger ;
import org.slf4j.LoggerFactory ;
2022-08-16 01:42:18 +00:00
import org.springframework.beans.factory.annotation.Autowired ;
2022-08-09 06:29:52 +00:00
import org.springframework.stereotype.Service ;
2022-08-16 01:42:18 +00:00
import org.springframework.transaction.annotation.Transactional ;
import top.jfunc.common.db.QueryHelper ;
2022-08-09 06:29:52 +00:00
import top.jfunc.common.db.bean.Page ;
2022-08-16 01:42:18 +00:00
import top.jfunc.common.db.utils.Pagination ;
import top.jfunc.common.utils.StrUtil ;
2022-08-09 06:29:52 +00:00
2022-08-16 01:42:18 +00:00
import java.math.BigDecimal ;
import java.util.* ;
2022-08-09 06:29:52 +00:00
import java.util.concurrent.ConcurrentHashMap ;
/ * *
* @author Yuanping Zhang
* @date 2022 / 0 8 / 0 8
* /
@Service
public class MonthlySettleService {
2022-08-19 09:19:16 +00:00
private static final Logger logger = LoggerFactory . getLogger ( MonthlySettleService . class ) ;
2022-08-09 06:29:52 +00:00
2022-08-16 01:42:18 +00:00
@Autowired
private MonthlySettleRepository monthlySettleRepository ;
@Autowired
private MonthlySettleRepositoryCustom monthlySettleRepositoryCustom ;
@Autowired
private Pagination pagination ;
2022-08-09 06:29:52 +00:00
public Page < MonthlySettle > list ( Map < String , String > searchInfo , int pageNumber , int pageSize ) {
2022-08-16 01:42:18 +00:00
QueryHelper queryHelper = getQueryHelper ( searchInfo ) ;
return pagination . paginate ( queryHelper . getSql ( ) , MonthlySettle . class , pageNumber , pageSize ) ;
2022-08-09 06:29:52 +00:00
}
2022-08-16 01:42:18 +00:00
@Transactional ( rollbackFor = Exception . class )
public ResponseMsg check ( Collection < Map > excelMap , String date ) {
int successCount = 0 ;
int errorCount = 0 ;
2022-08-19 08:49:06 +00:00
if ( date = = null ) {
return ResponseMsg . buildFailedMsg ( "请选择导入时间!" ) ;
}
2022-08-16 01:42:18 +00:00
List < String > errorList = new ArrayList < > ( ) ;
List < MonthlySettle > monthlySettleList = new ArrayList < > ( ) ;
Set < String > projectNameSet = new HashSet < > ( ) ;
for ( Map m : excelMap ) {
try {
final Object o1 = m . get ( "项目编号" ) ;
if ( o1 = = null | | StrKit . isBlank ( o1 . toString ( ) ) ) {
throw new Exception ( "项目编号不能为空" ) ;
}
final Object o2 = m . get ( "最终业主" ) ;
if ( o2 = = null | | StrKit . isBlank ( o2 . toString ( ) ) ) {
throw new Exception ( "最终业主不能为空" ) ;
}
final Object o3 = m . get ( "合同方" ) ;
if ( o3 = = null | | StrKit . isBlank ( o3 . toString ( ) ) ) {
throw new Exception ( "合同方不能为空" ) ;
}
final Object o4 = m . get ( "项目名称" ) ;
if ( o4 = = null | | StrKit . isBlank ( o4 . toString ( ) ) ) {
throw new Exception ( "项目名称不能为空" ) ;
}
String projectName = o4 . toString ( ) ;
MonthlySettle old = monthlySettleRepository . findByMonthAndProjectName ( date , projectName ) ;
if ( old ! = null ) {
throw new Exception ( o4 + " " + date + "已存在" ) ;
}
if ( projectNameSet . contains ( projectName ) ) {
throw new Exception ( o4 + " " + date + "重复" ) ;
}
final Object o5 = m . get ( "合同金额" ) ;
if ( o5 = = null | | StrKit . isBlank ( o5 . toString ( ) ) ) {
throw new Exception ( "合同金额不能为空" ) ;
}
final Object o6 = m . get ( "累计已收款" ) ;
if ( o6 = = null | | StrKit . isBlank ( o6 . toString ( ) ) ) {
throw new Exception ( "累计已收款不能为空" ) ;
}
final Object o7 = m . get ( "已采购累计付款" ) ;
if ( o7 = = null | | StrKit . isBlank ( o7 . toString ( ) ) ) {
throw new Exception ( "已采购累计付款不能为空" ) ;
}
final Object o8 = m . get ( "已采购累计未付款" ) ;
if ( o8 = = null | | StrKit . isBlank ( o8 . toString ( ) ) ) {
throw new Exception ( "已采购累计未付款不能为空" ) ;
}
final Object o9 = m . get ( "超期垫资金额" ) ;
if ( o9 = = null | | StrKit . isBlank ( o9 . toString ( ) ) ) {
throw new Exception ( "超期垫资金额不能为空" ) ;
}
final Object o10 = m . get ( "销售累计开票金额" ) ;
if ( o10 = = null | | StrKit . isBlank ( o10 . toString ( ) ) ) {
throw new Exception ( "销售累计开票金额不能为空" ) ;
}
final Object o11 = m . get ( "合同编号" ) ;
if ( o11 = = null | | StrKit . isBlank ( o11 . toString ( ) ) ) {
throw new Exception ( "合同编号不能为空" ) ;
}
final Object o12 = m . get ( "项目类型" ) ;
if ( o12 = = null | | StrKit . isBlank ( o12 . toString ( ) ) ) {
throw new Exception ( "项目类型不能为空" ) ;
}
final Object o13 = m . get ( "合同签订时间" ) ;
if ( o13 = = null | | StrKit . isBlank ( o13 . toString ( ) ) ) {
throw new Exception ( "合同签订时间不能为空" ) ;
}
if ( ! o13 . toString ( ) . matches ( "\\d{4}-\\d{2}-\\d{2}" ) ) {
throw new Exception ( o4 + " " + date + "的合同签订时间不符合规范(yyyy-MM-dd)" ) ;
}
final Object o14 = m . get ( "销售经理" ) ;
if ( o14 = = null | | StrKit . isBlank ( o14 . toString ( ) ) ) {
throw new Exception ( "销售经理不能为空" ) ;
}
final Object o15 = m . get ( "项目经理" ) ;
if ( o15 = = null | | StrKit . isBlank ( o15 . toString ( ) ) ) {
throw new Exception ( "项目经理不能为空" ) ;
}
final Object o16 = m . get ( "收款节点" ) ;
if ( o16 = = null | | StrKit . isBlank ( o16 . toString ( ) ) ) {
throw new Exception ( "收款节点不能为空" ) ;
}
final Object o17 = m . get ( "收款要求时间" ) ;
if ( o17 = = null | | StrKit . isBlank ( o17 . toString ( ) ) ) {
throw new Exception ( "收款要求时间不能为空" ) ;
}
if ( ! o17 . toString ( ) . matches ( "\\d{4}-\\d{2}-\\d{2}" ) ) {
throw new Exception ( o4 + " " + date + "的收款要求时间不符合规范(yyyy-MM-dd)" ) ;
}
final Object o18 = m . get ( "收款金额" ) ;
if ( o18 = = null | | StrKit . isBlank ( o18 . toString ( ) ) ) {
throw new Exception ( "收款金额不能为空" ) ;
}
final Object o19 = m . get ( "实际收款时间" ) ;
if ( o19 = = null | | StrKit . isBlank ( o19 . toString ( ) ) ) {
throw new Exception ( "实际收款时间不能为空" ) ;
}
if ( ! o19 . toString ( ) . matches ( "\\d{4}-\\d{2}-\\d{2}" ) ) {
throw new Exception ( o4 + " " + date + "的实际收款时间不符合规范(yyyy-MM-dd)" ) ;
}
final Object o20 = m . get ( "实际收款金额" ) ;
if ( o20 = = null | | StrKit . isBlank ( o20 . toString ( ) ) ) {
throw new Exception ( "实际收款金额不能为空" ) ;
}
final Object o21 = m . get ( "实际欠收金额" ) ;
if ( o21 = = null | | StrKit . isBlank ( o21 . toString ( ) ) ) {
throw new Exception ( "实际欠收金额不能为空" ) ;
}
final Object o22 = m . get ( "超期天数" ) ;
if ( o22 = = null | | StrKit . isBlank ( o22 . toString ( ) ) ) {
throw new Exception ( "超期天数不能为空" ) ;
}
final Object o23 = m . get ( "到货证明" ) ;
if ( o23 = = null | | StrKit . isBlank ( o23 . toString ( ) ) ) {
throw new Exception ( "到货证明不能为空" ) ;
}
final Object o24 = m . get ( "验收报告时间" ) ;
if ( o24 = = null | | StrKit . isBlank ( o24 . toString ( ) ) ) {
throw new Exception ( "验收报告时间不能为空" ) ;
}
if ( ! o24 . toString ( ) . matches ( "\\d{4}-\\d{2}-\\d{2}" ) ) {
throw new Exception ( o4 + " " + date + "的验收报告时间不符合规范(yyyy-MM-dd)" ) ;
}
final Object o25 = m . get ( "项目风险预警" ) ;
if ( o25 = = null | | StrKit . isBlank ( o25 . toString ( ) ) ) {
throw new Exception ( "项目风险预警不能为空" ) ;
}
final Object o26 = m . get ( "已计收金额" ) ;
if ( o26 = = null | | StrKit . isBlank ( o26 . toString ( ) ) ) {
throw new Exception ( "已计收金额不能为空" ) ;
}
final Object o27 = m . get ( "未计收金额" ) ;
if ( o27 = = null | | StrKit . isBlank ( o27 . toString ( ) ) ) {
throw new Exception ( "未计收金额不能为空" ) ;
}
saveMonthlySettle ( m , date , projectName , monthlySettleList ) ;
2022-08-19 11:51:58 +00:00
projectNameSet . add ( projectName ) ;
successCount + + ;
2022-08-16 01:42:18 +00:00
} catch ( Exception e ) {
logger . error ( "" , e ) ;
errorCount + + ;
if ( ! e . getMessage ( ) . isEmpty ( ) ) {
errorList . add ( e . getMessage ( ) ) ;
}
}
}
monthlySettleRepository . save ( monthlySettleList ) ;
final ResponseMsg msg = ResponseMsg . buildSuccessMsg ( String . format ( "成功:%d, 失败:%d" , successCount , errorCount ) ) ;
msg . setData ( errorList ) ;
return msg ;
}
2022-08-19 11:40:07 +00:00
private void saveMonthlySettle ( Map m , String date , String projectName , List < MonthlySettle > monthlySettleList ) throws Exception {
2022-08-16 01:42:18 +00:00
MonthlySettle settle = new MonthlySettle ( ) ;
String key ;
Object o1 ;
settle . setMonth ( date ) ;
key = "项目编号" ;
o1 = m . get ( key ) ;
settle . setProjectNo ( ( String ) o1 ) ;
key = "最终业主" ;
o1 = m . get ( key ) ;
settle . setOwner ( ( String ) o1 ) ;
key = "合同方" ;
o1 = m . get ( key ) ;
settle . setContractParty ( ( String ) o1 ) ;
key = "项目名称" ;
o1 = m . get ( key ) ;
settle . setProjectName ( ( String ) o1 ) ;
2022-08-19 11:40:07 +00:00
try {
key = "合同金额" ;
o1 = ( m . get ( key ) = = null | | "" . equals ( m . get ( key ) ) ) ? "0.00" : m . get ( key ) ;
settle . setContractAmount ( new BigDecimal ( ( String ) o1 ) ) ;
key = "累计已收款" ;
o1 = ( m . get ( key ) = = null | | "" . equals ( m . get ( key ) ) ) ? "0.00" : m . get ( key ) ;
settle . setTotalCollect ( new BigDecimal ( ( String ) o1 ) ) ;
key = "已采购累计付款" ;
o1 = ( m . get ( key ) = = null | | "" . equals ( m . get ( key ) ) ) ? "0.00" : m . get ( key ) ;
settle . setTotalPurchasedPaid ( new BigDecimal ( ( String ) o1 ) ) ;
key = "已采购累计未付款" ;
o1 = ( m . get ( key ) = = null | | "" . equals ( m . get ( key ) ) ) ? "0.00" : m . get ( key ) ;
settle . setTotalPurchasedUnpaid ( new BigDecimal ( ( String ) o1 ) ) ;
key = "超期垫资金额" ;
o1 = ( m . get ( key ) = = null | | "" . equals ( m . get ( key ) ) ) ? "0.00" : m . get ( key ) ;
settle . setTimeOutAmount ( new BigDecimal ( ( String ) o1 ) ) ;
key = "销售累计开票金额" ;
o1 = ( m . get ( key ) = = null | | "" . equals ( m . get ( key ) ) ) ? "0.00" : m . get ( key ) ;
settle . setTotalBillAmount ( new BigDecimal ( ( String ) o1 ) ) ;
key = "实际收款金额" ;
o1 = ( m . get ( key ) = = null | | "" . equals ( m . get ( key ) ) ) ? "0.00" : m . get ( key ) ;
settle . setCollectActualAmount ( new BigDecimal ( ( String ) o1 ) ) ;
key = "实际欠收金额" ;
o1 = ( m . get ( key ) = = null | | "" . equals ( m . get ( key ) ) ) ? "0.00" : m . get ( key ) ;
settle . setUncollectActualAmount ( new BigDecimal ( ( String ) o1 ) ) ;
key = "收款金额" ;
o1 = ( m . get ( key ) = = null | | "" . equals ( m . get ( key ) ) ) ? "0.00" : m . get ( key ) ;
settle . setCollectAmount ( new BigDecimal ( ( String ) o1 ) ) ;
key = "已计收金额" ;
o1 = ( m . get ( key ) = = null | | "" . equals ( m . get ( key ) ) ) ? "0.00" : m . get ( key ) ;
settle . setCalColAmount ( new BigDecimal ( ( String ) o1 ) ) ;
key = "未计收金额" ;
o1 = ( m . get ( key ) = = null | | "" . equals ( m . get ( key ) ) ) ? "0.00" : m . get ( key ) ;
settle . setUncalColAmount ( new BigDecimal ( ( String ) o1 ) ) ;
} catch ( Exception e ) {
throw new Exception ( "金额请填入数字格式" ) ;
}
2022-08-16 01:42:18 +00:00
key = "合同编号" ;
o1 = m . get ( key ) ;
settle . setContractNo ( ( String ) o1 ) ;
key = "项目类型" ;
o1 = m . get ( key ) ;
settle . setProjectType ( ( String ) o1 ) ;
2022-08-19 11:40:07 +00:00
try {
key = "合同签订时间" ;
o1 = m . get ( key ) ;
settle . setContractSignTime ( DateKit . getDate ( ( String ) o1 , DateKit . DATE_FORMAT ) ) ;
key = "收款要求时间" ;
o1 = m . get ( key ) ;
settle . setCollectRequiredTime ( DateKit . getDate ( ( String ) o1 , DateKit . DATE_FORMAT ) ) ;
key = "验收报告时间" ;
o1 = m . get ( key ) ;
settle . setInspectionReportTime ( DateKit . getDate ( ( String ) o1 , DateKit . DATE_FORMAT ) ) ;
key = "实际收款时间" ;
o1 = m . get ( key ) ;
settle . setCollectActualTime ( DateKit . getDate ( ( String ) o1 , DateKit . DATE_FORMAT ) ) ;
} catch ( Exception e ) {
throw new Exception ( "时间请填入时间格式" ) ;
}
2022-08-16 01:42:18 +00:00
key = "销售经理" ;
o1 = m . get ( key ) ;
settle . setSaleManager ( ( String ) o1 ) ;
key = "项目经理" ;
o1 = m . get ( key ) ;
settle . setProjectManager ( ( String ) o1 ) ;
key = "收款节点" ;
o1 = m . get ( key ) ;
settle . setCollectPoint ( ( String ) o1 ) ;
2022-08-19 11:40:07 +00:00
2022-08-16 01:42:18 +00:00
key = "超期天数" ;
o1 = m . get ( key ) ;
settle . setTimeOutDay ( ( String ) o1 ) ;
key = "到货证明" ;
o1 = m . get ( key ) ;
settle . setProductCertificate ( ( String ) o1 ) ;
2022-08-19 11:40:07 +00:00
2022-08-16 01:42:18 +00:00
key = "项目风险预警" ;
o1 = m . get ( key ) ;
settle . setRiskWarning ( ( String ) o1 ) ;
2022-08-19 11:40:07 +00:00
2022-08-16 01:42:18 +00:00
monthlySettleList . add ( settle ) ;
2022-08-09 06:29:52 +00:00
}
2022-08-15 02:15:21 +00:00
public List < MonthlySettle > findOne ( String id , String time , String projectName ) {
2022-08-16 01:42:18 +00:00
List < MonthlySettle > list = new ArrayList < > ( ) ;
2022-08-19 04:24:13 +00:00
MonthlySettle monthlySettle = findByMonthAndProjectName ( time , projectName ) ;
2022-08-16 01:42:18 +00:00
list . add ( monthlySettle ) ;
return list ;
}
private QueryHelper getQueryHelper ( Map < String , String > searchInfo ) {
2022-08-19 04:24:13 +00:00
QueryHelper queryHelper = new QueryHelper ( "SELECT s.*, ms.*, FORMAT(s.contract_amount,2) as contractAmountRound, FORMAT(s.total_collect,2) as totalCollectRound, FORMAT(s.total_purchased_paid,2) as totalPurchasedPaidRound, FORMAT(s.total_purchased_unpaid,2) as totalPurchasedUnpaidRound" +
", FORMAT(s.time_out_amount,2) as timeOutAmountRound, FORMAT(s.total_bill_amount,2) as totalBillAmountRound, FORMAT(s.collect_amount,2) as collectAmountRound, FORMAT(s.collect_actual_amount,2) as collectActualAmountRound" +
", FORMAT(s.uncollect_actual_amount,2) as uncollectActualAmountRound, FORMAT(s.cal_col_amount,2) as calColAmountRound, FORMAT(s.uncal_col_amount,2) as uncalColAmountRound" +
", DATE_FORMAT(s.contract_sign_time, '%Y-%m-%d') as contractSignTimeStr, DATE_FORMAT(s.collect_required_time, '%Y-%m-%d') as collectRequiredTimeStr, DATE_FORMAT(s.collect_actual_time, '%Y-%m-%d') as collectActualTimeStr, DATE_FORMAT(s.inspection_report_time, '%Y-%m-%d') as inspectionReportTimeStr " , "(select project_name as name, max(ms.month) as time from monthly_settle ms group by ms.project_name)" , "ms" ) ;
2022-08-16 01:42:18 +00:00
queryHelper . leftJoin ( "monthly_settle s" , "ms.time = s.month and ms.name = s.project_name" ) ;
queryHelper . addCondition ( StrUtil . isNotEmpty ( searchInfo . get ( "projectNo" ) ) , "s.project_no LIKE ?" , "%" + searchInfo . get ( "projectNo" ) + "%" ) ;
2022-08-17 13:37:43 +00:00
queryHelper . addCondition ( StrUtil . isNotEmpty ( searchInfo . get ( "name" ) ) , "s.project_name LIKE ?" , "%" + searchInfo . get ( "name" ) + "%" ) ;
2022-08-16 01:42:18 +00:00
queryHelper . addCondition ( StrUtil . isNotEmpty ( searchInfo . get ( "owner" ) ) , "s.owner LIKE ?" , "%" + searchInfo . get ( "owner" ) + "%" ) ;
queryHelper . addCondition ( StrUtil . isNotEmpty ( searchInfo . get ( "contractParty" ) ) , "s.contract_party LIKE ?" , "%" + searchInfo . get ( "contractParty" ) + "%" ) ;
queryHelper . addCondition ( StrUtil . isNotEmpty ( searchInfo . get ( "contractNo" ) ) , "s.contract_no LIKE ?" , "%" + searchInfo . get ( "contractNo" ) + "%" ) ;
queryHelper . addCondition ( StrUtil . isNotEmpty ( searchInfo . get ( "projectType" ) ) , "s.project_type LIKE ?" , "%" + searchInfo . get ( "projectType" ) + "%" ) ;
queryHelper . addCondition ( StrUtil . isNotEmpty ( searchInfo . get ( "saleManager" ) ) , "s.sale_manager LIKE ?" , "%" + searchInfo . get ( "saleManager" ) + "%" ) ;
queryHelper . addCondition ( StrUtil . isNotEmpty ( searchInfo . get ( "projectManager" ) ) , "s.project_manager LIKE ?" , "%" + searchInfo . get ( "projectManager" ) + "%" ) ;
queryHelper . addCondition ( StrUtil . isNotEmpty ( searchInfo . get ( "timeOutDay" ) ) , "s.time_out_day LIKE ?" , "%" + searchInfo . get ( "timeOutDay" ) + "%" ) ;
if ( StrUtil . isNotEmpty ( searchInfo . get ( "startTime" ) ) ) {
String time = searchInfo . get ( "startTime" ) + " 00:00:00" ;
2022-08-17 13:37:43 +00:00
queryHelper . addCondition ( "s.collect_actual_time>=?" , time ) ;
2022-08-16 01:42:18 +00:00
}
if ( StrUtil . isNotEmpty ( searchInfo . get ( "endTime" ) ) ) {
2022-08-17 13:37:43 +00:00
String time = searchInfo . get ( "endTime" ) + " 23:59:59" ;
queryHelper . addCondition ( "s.collect_actual_time<=?" , time ) ;
2022-08-16 01:42:18 +00:00
}
if ( StrUtil . isNotEmpty ( searchInfo . get ( "contractStartTime" ) ) ) {
String time = searchInfo . get ( "contractStartTime" ) + " 00:00:00" ;
2022-08-19 10:13:27 +00:00
queryHelper . addCondition ( "s.contract_sign_time>=?" , time ) ;
2022-08-16 01:42:18 +00:00
}
if ( StrUtil . isNotEmpty ( searchInfo . get ( "contractEndTime" ) ) ) {
2022-08-17 13:37:43 +00:00
String time = searchInfo . get ( "contractEndTime" ) + " 23:59:59" ;
2022-08-19 10:13:27 +00:00
queryHelper . addCondition ( "s.contract_sign_time<=?" , time ) ;
2022-08-16 01:42:18 +00:00
}
queryHelper . addDescOrderProperty ( "s.id" ) ;
return queryHelper ;
2022-08-15 02:15:21 +00:00
}
2022-08-19 04:24:13 +00:00
public MonthlySettle findById ( int id ) {
QueryHelper queryHelper = new QueryHelper ( "SELECT s.*, FORMAT(s.contract_amount,2) as contractAmountRound, FORMAT(s.total_collect,2) as totalCollectRound, FORMAT(s.total_purchased_paid,2) as totalPurchasedPaidRound, FORMAT(s.total_purchased_unpaid,2) as totalPurchasedUnpaidRound" +
", FORMAT(s.time_out_amount,2) as timeOutAmountRound, FORMAT(s.total_bill_amount,2) as totalBillAmountRound, FORMAT(s.collect_amount,2) as collectAmountRound, FORMAT(s.collect_actual_amount,2) as collectActualAmountRound" +
", FORMAT(s.uncollect_actual_amount,2) as uncollectActualAmountRound, FORMAT(s.cal_col_amount,2) as calColAmountRound, FORMAT(s.uncal_col_amount,2) as uncalColAmountRound " +
", DATE_FORMAT(s.contract_sign_time, '%Y-%m-%d') as contractSignTimeStr, DATE_FORMAT(s.collect_required_time, '%Y-%m-%d') as collectRequiredTimeStr, DATE_FORMAT(s.collect_actual_time, '%Y-%m-%d') as collectActualTimeStr, DATE_FORMAT(s.inspection_report_time, '%Y-%m-%d') as inspectionReportTimeStr " , "monthly_settle" , "s" ) ;
queryHelper . addCondition ( "s.id=?" , id ) ;
MonthlySettle first = pagination . findFirst ( queryHelper . getSql ( ) , MonthlySettle . class ) ;
return first ;
}
public MonthlySettle findByMonthAndProjectName ( String month , String projectName ) {
QueryHelper queryHelper = new QueryHelper ( "SELECT s.*, FORMAT(s.contract_amount,2) as contractAmountRound, FORMAT(s.total_collect,2) as totalCollectRound, FORMAT(s.total_purchased_paid,2) as totalPurchasedPaidRound, FORMAT(s.total_purchased_unpaid,2) as totalPurchasedUnpaidRound" +
", FORMAT(s.time_out_amount,2) as timeOutAmountRound, FORMAT(s.total_bill_amount,2) as totalBillAmountRound, FORMAT(s.collect_amount,2) as collectAmountRound, FORMAT(s.collect_actual_amount,2) as collectActualAmountRound" +
", FORMAT(s.uncollect_actual_amount,2) as uncollectActualAmountRound, FORMAT(s.cal_col_amount,2) as calColAmountRound, FORMAT(s.uncal_col_amount,2) as uncalColAmountRound " +
", DATE_FORMAT(s.contract_sign_time, '%Y-%m-%d') as contractSignTimeStr, DATE_FORMAT(s.collect_required_time, '%Y-%m-%d') as collectRequiredTimeStr, DATE_FORMAT(s.collect_actual_time, '%Y-%m-%d') as collectActualTimeStr, DATE_FORMAT(s.inspection_report_time, '%Y-%m-%d') as inspectionReportTimeStr " , "monthly_settle" , "s" ) ;
queryHelper . addCondition ( "s.month=?" , month ) ;
queryHelper . addCondition ( "s.project_name=?" , projectName ) ;
MonthlySettle first = pagination . findFirst ( queryHelper . getSql ( ) , MonthlySettle . class ) ;
return first ;
}
2022-08-09 06:29:52 +00:00
}