@ -120,30 +120,62 @@ public class FinancialReceivablesServiceImpl implements IFinancialReceivablesSer
* @param financialReceivables 财务应收账款
* @param financialReceivables 财务应收账款
* @return 结果
* @return 结果
* /
* /
@Transactional
@Transactional ( rollbackFor = Exception . class )
@Override
@Override
public int updateFinancialReceivables ( FinancialReceivables financialReceivables )
public int updateFinancialReceivables ( FinancialReceivables financialReceivables )
{
{
String loginName = ShiroUtils . getLoginName ( ) ;
String loginName = ShiroUtils . getLoginName ( ) ;
financialReceivables . setUpdateBy ( loginName ) ;
financialReceivables . setUpdateTime ( DateUtils . getNowDate ( ) ) ;
List < FinancialReceivablesRecordsVO > receivablesRecordsVOList = financialReceivables . getReceivablesRecordsVOList ( ) ;
List < FinancialReceivablesRecordsVO > receivablesRecordsVOList = financialReceivables . getReceivablesRecordsVOList ( ) ;
if ( StringUtils . isEmpty ( receivablesRecordsVOList ) ) {
if ( StringUtils . isEmpty ( receivablesRecordsVOList ) ) {
log . warn ( "收款记录数据为空" ) ;
log . warn ( "收款记录数据为空" ) ;
}
}
FinancialReceivables originReceivables = financialReceivablesMapper . selectFinancialReceivablesById ( financialReceivables . getFinancialReceivablesId ( ) ) ;
BigDecimal receivedNum = Optional . ofNullable ( originReceivables . getReceivedIncludesTax ( ) ) . orElse ( BigDecimal . ZERO ) ;
BigDecimal priceIncludTax = Optional . ofNullable ( originReceivables . getPriceIncludesTax ( ) ) . orElse ( BigDecimal . ZERO ) ;
for ( FinancialReceivablesRecordsVO financialReceivablesRecordsVO : receivablesRecordsVOList ) {
for ( FinancialReceivablesRecordsVO financialReceivablesRecordsVO : receivablesRecordsVOList ) {
FinancialReceivablesRecords receivablesRecords = new FinancialReceivablesRecords ( ) ;
FinancialReceivablesRecords receivablesRecords = new FinancialReceivablesRecords ( ) ;
receivablesRecords . setCreateBy ( loginName ) ;
receivablesRecords . setCreateBy ( loginName ) ;
receivablesRecords . setCreateTime ( new Date ( ) ) ;
receivablesRecords . setCreateTime ( new Date ( ) ) ;
//拿到应收账款的code
//拿到应收账款的code
receivablesRecords . setFinancialReceivablesCode ( financialReceivables . getFinancialReceivablesCode ( ) ) ;
receivablesRecords . setFinancialReceivablesCode ( financialReceivables . getFinancialReceivablesCode ( ) ) ;
receivablesRecords . setSalesOrderCode ( receivablesRecords . getSalesOrderCode ( ) ) ;
receivablesRecords . setOperatingTime ( new Date ( ) ) ;
receivablesRecords . setOperatingTime ( new Date ( ) ) ;
receivablesRecords . setReceivablesRemark ( financialReceivablesRecordsVO . getReceivablesRemark ( ) ) ;
receivablesRecords . setReceivablesRemark ( financialReceivablesRecordsVO . getReceivablesRemark ( ) ) ;
receivablesRecords . setReceivablesDate ( financialReceivablesRecordsVO . getReceivablesDate ( ) ) ;
receivablesRecords . setReceivablesDate ( financialReceivablesRecordsVO . getReceivablesDate ( ) ) ;
receivablesRecords . setReceivablesPrice ( financialReceivablesRecordsVO . getReceivablesPrice ( ) ) ;
receivablesRecords . setReceivablesPrice ( financialReceivablesRecordsVO . getReceivablesPrice ( ) ) ;
receivablesRecords . setReceivablesAbstract ( financialReceivablesRecordsVO . getReceivablesAbstract ( ) ) ;
receivablesRecords . setReceivablesAbstract ( financialReceivablesRecordsVO . getReceivablesAbstract ( ) ) ;
receivablesRecordsMapper . insertFinancialReceivablesRecords ( receivablesRecords ) ;
receivablesRecordsMapper . insertFinancialReceivablesRecords ( receivablesRecords ) ;
receivedNum = receivedNum . add ( receivablesRecords . getReceivablesPrice ( ) ) ;
}
BigDecimal notReceivedNum = priceIncludTax . subtract ( receivedNum ) ;
if ( priceIncludTax . compareTo ( receivedNum ) = = 0 & & notReceivedNum . compareTo ( BigDecimal . ZERO ) = = 0 ) {
financialReceivables . setReceivablesClosingStatus ( "2" ) ; //已结案
closingFinancialReceivables ( financialReceivables ) ;
} else if ( ( priceIncludTax . compareTo ( receivedNum ) ) > 0 & & receivedNum . compareTo ( BigDecimal . ZERO ) ! = 0 ) {
financialReceivables . setReceivablesClosingStatus ( "1" ) ; //部分收款
//更新关联销售订单收款状态
String salesOrderCode = financialReceivables . getSalesOrderCode ( ) ;
if ( salesOrderCode ! = null ) {
SysSalesOrderVo sysSalesOrderVo = sysSalesOrderMapper . selectSysSalesOrderBySalesOrderCode ( salesOrderCode ) ;
if ( sysSalesOrderVo = = null ) {
throw new BusinessException ( "关联销售订单不存在" ) ;
}
sysSalesOrderVo . setCloseStatus ( "1" ) ; //部分收款
sysSalesOrderVo . setUpdateBy ( loginName ) ;
sysSalesOrderVo . setUpdateTime ( DateUtils . getNowDate ( ) ) ;
int updateSysSalesOrderResult = sysSalesOrderMapper . updateSysSalesOrder ( sysSalesOrderVo ) ;
if ( updateSysSalesOrderResult < = 0 ) {
throw new BusinessException ( "更新销售订单失败" ) ;
}
}
}
}
financialReceivables . setReceivedIncludesTax ( receivedNum ) ; //已收
financialReceivables . setNotReceivedIncludesTax ( notReceivedNum ) ; //未收
financialReceivables . setUpdateBy ( loginName ) ;
financialReceivables . setUpdateTime ( DateUtils . getNowDate ( ) ) ;
return financialReceivablesMapper . updateFinancialReceivables ( financialReceivables ) ;
return financialReceivablesMapper . updateFinancialReceivables ( financialReceivables ) ;
}
}
@ -168,7 +200,7 @@ public class FinancialReceivablesServiceImpl implements IFinancialReceivablesSer
@Override
@Override
public int generateReceivablesBySalesOrderCode ( String salesOrderCode ) {
public int generateReceivablesBySalesOrderCode ( String salesOrderCode ) {
FinancialReceivables financialReceivables = new FinancialReceivables ( ) ;
FinancialReceivables financialReceivables = new FinancialReceivables ( ) ;
FinancialReceivablesRecords receivablesRecords = new FinancialReceivablesRecords ( ) ;
// FinancialReceivablesRecords receivablesRecords = new FinancialReceivablesRecords();
// 更改日期格式以提高可读性
// 更改日期格式以提高可读性
SimpleDateFormat df = new SimpleDateFormat ( "yyyy-MM-dd" ) ;
SimpleDateFormat df = new SimpleDateFormat ( "yyyy-MM-dd" ) ;
String datePart = df . format ( new Date ( ) ) ;
String datePart = df . format ( new Date ( ) ) ;
@ -190,9 +222,12 @@ public class FinancialReceivablesServiceImpl implements IFinancialReceivablesSer
financialReceivables . setOpenBank ( sysCustomerVo . getDepositBank ( ) ) ;
financialReceivables . setOpenBank ( sysCustomerVo . getDepositBank ( ) ) ;
financialReceivables . setOpenAccount ( sysCustomerVo . getBankAccount ( ) ) ;
financialReceivables . setOpenAccount ( sysCustomerVo . getBankAccount ( ) ) ;
financialReceivables . setCustomerId ( sysCustomerVo . getEnterpriseCode ( ) ) ;
financialReceivables . setCustomerId ( sysCustomerVo . getEnterpriseCode ( ) ) ;
financialReceivables . setCustomerName ( sysCustomerVo . getEnterpriseName ( ) ) ;
financialReceivables . setCurrencyType ( sysSalesOrderVo . getCommonCurrency ( ) ) ;
financialReceivables . setCurrencyType ( sysSalesOrderVo . getCommonCurrency ( ) ) ;
financialReceivables . setPriceExcludingTax ( BigDecimal . valueOf ( sysSalesOrderVo . getNoRmbSum ( ) ) ) ;
financialReceivables . setPriceExcludingTax ( BigDecimal . valueOf ( sysSalesOrderVo . getNoRmbSum ( ) ) ) ;
financialReceivables . setPriceIncludesTax ( BigDecimal . valueOf ( sysSalesOrderVo . getRmbTaxSum ( ) ) ) ;
financialReceivables . setPriceIncludesTax ( BigDecimal . valueOf ( sysSalesOrderVo . getRmbTaxSum ( ) ) ) ;
financialReceivables . setReceivedIncludesTax ( BigDecimal . ZERO ) ;
financialReceivables . setNotReceivedIncludesTax ( BigDecimal . valueOf ( sysSalesOrderVo . getRmbTaxSum ( ) ) ) ;
financialReceivables . setPaymentCondition ( sysSalesOrderVo . getPaymentTerms ( ) ) ;
financialReceivables . setPaymentCondition ( sysSalesOrderVo . getPaymentTerms ( ) ) ;
financialReceivables . setBusinessMembers ( sysSalesOrderVo . getBusinessMembers ( ) ) ;
financialReceivables . setBusinessMembers ( sysSalesOrderVo . getBusinessMembers ( ) ) ;
financialReceivables . setFinancialDeliverStatus ( "0" ) ;
financialReceivables . setFinancialDeliverStatus ( "0" ) ;
@ -200,12 +235,6 @@ public class FinancialReceivablesServiceImpl implements IFinancialReceivablesSer
financialReceivables . setCreateBy ( ShiroUtils . getLoginName ( ) ) ;
financialReceivables . setCreateBy ( ShiroUtils . getLoginName ( ) ) ;
//插入数据到应收款明细中
//插入数据到应收款明细中
receivablesRecords . setFinancialReceivablesCode ( newCode ) ;
receivablesRecords . setReceivablesClosingStatus ( "0" ) ;
receivablesRecords . setSalesOrderCode ( salesOrderCode ) ;
receivablesRecords . setCreateTime ( new Date ( ) ) ;
receivablesRecords . setCreateBy ( ShiroUtils . getLoginName ( ) ) ;
receivablesRecordsMapper . insertFinancialReceivablesRecords ( receivablesRecords ) ;
return financialReceivablesMapper . insertFinancialReceivables ( financialReceivables ) ;
return financialReceivablesMapper . insertFinancialReceivables ( financialReceivables ) ;
}
}
@ -275,10 +304,15 @@ public class FinancialReceivablesServiceImpl implements IFinancialReceivablesSer
* * /
* * /
@Transactional ( rollbackFor = Exception . class )
@Transactional ( rollbackFor = Exception . class )
@Override
@Override
public int closingFinancialReceivablesById ( Long financialReceivablesId ) {
public int closingFinancialReceivables ( FinancialReceivables financialReceivables ) {
int result = financialReceivablesMapper . updateReceivablesClosingStatusById ( financialReceivablesId ) ;
String loginName = ShiroUtils . getLoginName ( ) ;
FinancialReceivables financialReceivables = financialReceivablesMapper . selectFinancialReceivablesById ( financialReceivablesId ) ;
financialReceivables . setReceivablesClosingStatus ( "2" ) ; //已结案
String salesOrderCode = financialReceivables . getSalesOrderCode ( ) ;
financialReceivables . setUpdateBy ( loginName ) ;
financialReceivables . setUpdateTime ( DateUtils . getNowDate ( ) ) ;
int result = financialReceivablesMapper . updateFinancialReceivables ( financialReceivables ) ;
FinancialReceivables receivables = financialReceivablesMapper . selectFinancialReceivablesById ( financialReceivables . getFinancialReceivablesId ( ) ) ;
String salesOrderCode = receivables . getSalesOrderCode ( ) ;
SysSalesOrderVo sysSalesOrderVo = sysSalesOrderMapper . selectSysSalesOrderBySalesOrderCode ( salesOrderCode ) ;
SysSalesOrderVo sysSalesOrderVo = sysSalesOrderMapper . selectSysSalesOrderBySalesOrderCode ( salesOrderCode ) ;
//设置为已结案
//设置为已结案
@ -286,6 +320,8 @@ public class FinancialReceivablesServiceImpl implements IFinancialReceivablesSer
if ( sysSalesOrderVo = = null ) {
if ( sysSalesOrderVo = = null ) {
log . warn ( "销售单号不存在:{}" , salesOrderCode ) ;
log . warn ( "销售单号不存在:{}" , salesOrderCode ) ;
}
}
sysSalesOrderVo . setUpdateBy ( loginName ) ;
sysSalesOrderVo . setUpdateTime ( DateUtils . getNowDate ( ) ) ;
int updateSysSalesOrderResult = sysSalesOrderMapper . updateSysSalesOrder ( sysSalesOrderVo ) ;
int updateSysSalesOrderResult = sysSalesOrderMapper . updateSysSalesOrder ( sysSalesOrderVo ) ;
if ( updateSysSalesOrderResult < = 0 ) {
if ( updateSysSalesOrderResult < = 0 ) {
throw new BusinessException ( "销售订单结案失败" ) ;
throw new BusinessException ( "销售订单结案失败" ) ;
@ -293,11 +329,12 @@ public class FinancialReceivablesServiceImpl implements IFinancialReceivablesSer
//更改客户资料客户标识 为下过单
//更改客户资料客户标识 为下过单
SysCustomerVo sysCustomerVo = sysCustomerMapper . selectSysCustomerByEnterpriseCode ( sysSalesOrderVo . getEnterpriseCode ( ) ) ;
SysCustomerVo sysCustomerVo = sysCustomerMapper . selectSysCustomerByEnterpriseCode ( sysSalesOrderVo . getEnterpriseCode ( ) ) ;
sysCustomerVo . setCustomerSign ( "2" ) ;
sysCustomerVo . setCustomerSign ( "2" ) ;
sysCustomerVo . setUpdateBy ( loginName ) ;
sysCustomerVo . setUpdateTime ( DateUtils . getNowDate ( ) ) ;
int updateSysCustomer = sysCustomerMapper . updateSysCustomer ( sysCustomerVo ) ;
int updateSysCustomer = sysCustomerMapper . updateSysCustomer ( sysCustomerVo ) ;
if ( updateSysCustomer < = 0 ) {
if ( updateSysCustomer < = 0 ) {
throw new BusinessException ( "客户资料更改客户标识失败" ) ;
throw new BusinessException ( "客户资料更改客户标识失败" ) ;
}
}
return result ;
return result ;
}
}
@ -335,11 +372,6 @@ public class FinancialReceivablesServiceImpl implements IFinancialReceivablesSer
//将以上信息通过map传输出去
//将以上信息通过map传输出去
BigDecimal amount = BigDecimal . ZERO ;
BigDecimal amount = BigDecimal . ZERO ;
List < ExportFinancialReceivablesVo > list = new ArrayList < > ( ) ;
List < ExportFinancialReceivablesVo > list = new ArrayList < > ( ) ;
String date = DateUtils . getDate ( ) ;
String [ ] dateArray = date . split ( "-" ) ;
map . put ( "year" , dateArray [ 0 ] ) ;
map . put ( "month" , dateArray [ 1 ] ) ;
map . put ( "day" , dateArray [ 2 ] ) ;
//接收拆分的数字
//接收拆分的数字
for ( FinancialReceivablesRecords financialReceivablesRecord : financialReceivablesRecordsList ) {
for ( FinancialReceivablesRecords financialReceivablesRecord : financialReceivablesRecordsList ) {
//对于财务分割的数据,需要合计。
//对于财务分割的数据,需要合计。
@ -357,7 +389,18 @@ public class FinancialReceivablesServiceImpl implements IFinancialReceivablesSer
map . put ( "list" , list ) ;
map . put ( "list" , list ) ;
FinancialReceivablesRecords financialReceivablesRecord = new FinancialReceivablesRecords ( ) ;
FinancialReceivablesRecords financialReceivablesRecord = new FinancialReceivablesRecords ( ) ;
financialReceivablesRecord . setReceivablesPrice ( amount ) ;
financialReceivablesRecord . setReceivablesPrice ( amount ) ;
map . put ( "amount" , splitNumber ( financialReceivablesRecord ) ) ;
ExportFinancialReceivablesVo receivablesVo = splitNumber ( financialReceivablesRecord ) ;
map . put ( "yi" , receivablesVo . getYi ( ) ) ;
map . put ( "qianw" , receivablesVo . getQianw ( ) ) ;
map . put ( "baiw" , receivablesVo . getBaiw ( ) ) ;
map . put ( "shiw" , receivablesVo . getShiw ( ) ) ;
map . put ( "wan" , receivablesVo . getWan ( ) ) ;
map . put ( "qian" , receivablesVo . getQian ( ) ) ;
map . put ( "bai" , receivablesVo . getBai ( ) ) ;
map . put ( "shi" , receivablesVo . getShi ( ) ) ;
map . put ( "yuan" , receivablesVo . getYuan ( ) ) ;
map . put ( "jiao" , receivablesVo . getJiao ( ) ) ;
map . put ( "fen" , receivablesVo . getFen ( ) ) ;
map . put ( "loginName" , ShiroUtils . getLoginName ( ) ) ;
map . put ( "loginName" , ShiroUtils . getLoginName ( ) ) ;
return map ;
return map ;
}
}
@ -410,4 +453,8 @@ public class FinancialReceivablesServiceImpl implements IFinancialReceivablesSer
public Integer updateReceivableDebit ( FinancialReceivables financialReceivables ) {
public Integer updateReceivableDebit ( FinancialReceivables financialReceivables ) {
return financialReceivablesMapper . updateFinancialReceivables ( financialReceivables ) ;
return financialReceivablesMapper . updateFinancialReceivables ( financialReceivables ) ;
}
}
/*批量查询*/
public List < FinancialReceivables > selectFinancialReceivablesByNos ( String [ ] ids ) {
return financialReceivablesMapper . selectFinancialReceivablesByNos ( ids ) ;
}
}
}