| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255 |
- package cn.com.lzt.contractpayment.service.impl;
- import cn.com.lzt.contract.entity.ContractEntity;
- import cn.com.lzt.contractinvoice.entity.ContractInvoiceEntity;
- import cn.com.lzt.contractp.entity.ContractPEntity;
- import cn.com.lzt.contractpayment.entity.ContractPaymentEntity;
- import cn.com.lzt.contractpayment.service.ContractPaymentServiceI;
- import org.jeecgframework.core.common.exception.BusinessException;
- import org.jeecgframework.core.common.service.impl.CommonServiceImpl;
- import org.jeecgframework.core.util.MyBeanUtils;
- import org.jeecgframework.core.util.StringUtil;
- import org.jeecgframework.core.util.oConvertUtils;
- import org.springframework.stereotype.Service;
- import org.springframework.transaction.annotation.Transactional;
- import java.util.List;
- import java.util.UUID;
- @Service("contractPaymentService")
- @Transactional
- public class ContractPaymentServiceImpl extends CommonServiceImpl implements ContractPaymentServiceI {
-
- public <T> void delete(T entity) {
- super.delete(entity);
- //执行删除操作配置的sql增强
- this.doDelSql((ContractPaymentEntity)entity);
- }
-
- public void addMain(ContractPaymentEntity contractPayment,
- List<ContractInvoiceEntity> contractInvoiceList){
- //保存主信息
- this.save(contractPayment);
-
- /**保存-发票明细*/
- for(ContractInvoiceEntity contractInvoice:contractInvoiceList){
- //外键设置
- contractInvoice.setPaymentid(contractPayment.getId());
- contractInvoice.setContractid(contractPayment.getContractid());
- this.save(contractInvoice);
- }
- //回写合同中累计开票金额
- switch (contractPayment.getBilltype()) {
- case "service":
- ContractEntity contract = getEntity(ContractEntity.class, contractPayment.getContractid());
- double invoiceAmount = contract.getTotalinvoice();
- for(ContractInvoiceEntity invoice :contractInvoiceList) {
- invoiceAmount+=invoice.getInvoiceamount();
- }
- contract.setTotalinvoice(invoiceAmount);
- saveOrUpdate(contract);
- break;
- case "purchase":
- ContractPEntity contractp = getEntity(ContractPEntity.class, contractPayment.getContractid());
- double invoiceAmountp = contractp.getTotalinvoice();
- for(ContractInvoiceEntity invoice :contractInvoiceList) {
- invoiceAmountp+=invoice.getInvoiceamount();
- }
- contractp.setTotalinvoice(invoiceAmountp);
- saveOrUpdate(contractp);
- break;
- default:
- break;
- }
- //回写完毕
- //执行新增操作配置的sql增强
- this.doAddSql(contractPayment);
- // this.updateContractTotalInvoice(contractPayment.getContractid(), contractPayment.getInvoiceamount());
- }
-
- public void updateMain(ContractPaymentEntity contractPayment,
- List<ContractInvoiceEntity> contractInvoiceList) {
- //保存主表信息
- double changedInvoice = 0;
- if(StringUtil.isNotEmpty(contractPayment.getId())){
- try {
- ContractPaymentEntity temp = findUniqueByProperty(ContractPaymentEntity.class, "id", contractPayment.getId());
- changedInvoice = contractPayment.getInvoiceamount()-temp.getInvoiceamount();
- MyBeanUtils.copyBeanNotNull2Bean(contractPayment, temp);
- this.saveOrUpdate(temp);
- } catch (Exception e) {
- e.printStackTrace();
- }
- }else{
- this.saveOrUpdate(contractPayment);
- changedInvoice = contractPayment.getInvoiceamount();
- }
- //更新合同累计开票金额
- updateContractTotalInvoice(contractPayment.getContractid(), changedInvoice,contractPayment.getBilltype());
- //===================================================================================
- //获取参数
- Object id0 = contractPayment.getId();
- //===================================================================================
- //1.查询出数据库的明细数据-发票明细
- String hql0 = "from ContractInvoiceEntity where 1 = 1 AND pAYMENTID =? ";
- List<ContractInvoiceEntity> contractInvoiceOldList = this.findHql(hql0,id0);
- //变化的开票金额
- double changedInvoiceAmount = 0;
- //2.筛选更新明细数据-发票明细
- if(contractInvoiceList!=null&&contractInvoiceList.size()>0){
- for(ContractInvoiceEntity oldE:contractInvoiceOldList){
- boolean isUpdate = false;
- for(ContractInvoiceEntity sendE:contractInvoiceList){
- //需要更新的明细数据-发票明细
- if(oldE.getId().equals(sendE.getId())){
- try {
- changedInvoiceAmount += sendE.getInvoiceamount() - oldE.getInvoiceamount();
- MyBeanUtils.copyBeanNotNull2Bean(sendE,oldE);
- this.saveOrUpdate(oldE);
- } catch (Exception e) {
- e.printStackTrace();
- throw new BusinessException(e.getMessage());
- }
- isUpdate= true;
- break;
- }
- }
- if(!isUpdate){
- changedInvoiceAmount += 0-oldE.getInvoiceamount();
- //如果数据库存在的明细,前台没有传递过来则是删除-发票明细
- super.delete(oldE);
- }
-
- }
- //3.持久化新增的数据-发票明细
- for(ContractInvoiceEntity contractInvoice:contractInvoiceList){
- if(oConvertUtils.isEmpty(contractInvoice.getId())){
- //外键设置
- contractInvoice.setPaymentid(contractPayment.getId());
- changedInvoiceAmount += contractInvoice.getInvoiceamount();
- this.save(contractInvoice);
- }
- }
- }
-
- //回写合同中累计开票金额
- ContractEntity contract = getEntity(ContractEntity.class, contractPayment.getContractid());
- contract.setTotalinvoice(contract.getTotalinvoice() + changedInvoiceAmount);
- saveOrUpdate(contract);
- //回写完毕
- //执行更新操作配置的sql增强
- this.doUpdateSql(contractPayment);
- }
-
- public void delMain(ContractPaymentEntity contractPayment) {
- //删除主表信息
- this.delete(contractPayment);
- //===================================================================================
- //获取参数
- Object id0 = contractPayment.getId();
- //===================================================================================
- //删除-发票明细
- String hql0 = "from ContractInvoiceEntity where 1 = 1 AND pAYMENTID =? ";
- List<ContractInvoiceEntity> contractInvoiceOldList = this.findHql(hql0,id0);
- //回写合同中累计开票金额
- switch (contractPayment.getBilltype()) {
- case "service":
- ContractEntity contract = getEntity(ContractEntity.class, contractPayment.getContractid());
- double invoiceAmount = contract.getTotalinvoice();
- for(ContractInvoiceEntity invoice :contractInvoiceOldList) {
- invoiceAmount-=invoice.getInvoiceamount();
- }
- contract.setTotalinvoice(invoiceAmount);
- saveOrUpdate(contract);
- break;
- case "purchase":
- ContractPEntity contractp = getEntity(ContractPEntity.class, contractPayment.getContractid());
- double invoiceAmountp = contractp.getTotalinvoice();
- for(ContractInvoiceEntity invoice :contractInvoiceOldList) {
- invoiceAmountp-=invoice.getInvoiceamount();
- }
- contractp.setTotalinvoice(invoiceAmountp);
- saveOrUpdate(contractp);
- break;
- default:
- break;
- }
- this.deleteAllEntitie(contractInvoiceOldList);
- }
-
-
- /**
- * 默认按钮-sql增强-新增操作
- * @param id
- * @return
- */
- public boolean doAddSql(ContractPaymentEntity t){
- return true;
- }
- /**
- * 默认按钮-sql增强-更新操作
- * @param id
- * @return
- */
- public boolean doUpdateSql(ContractPaymentEntity t){
- return true;
- }
- /**
- * 默认按钮-sql增强-删除操作
- * @param id
- * @return
- */
- public boolean doDelSql(ContractPaymentEntity t){
- return true;
- }
-
- /**
- * 替换sql中的变量
- * @param sql
- * @return
- */
- public String replaceVal(String sql,ContractPaymentEntity t){
- sql = sql.replace("#{id}",String.valueOf(t.getId()));
- sql = sql.replace("#{code}",String.valueOf(t.getCode()));
- sql = sql.replace("#{create_name}",String.valueOf(t.getCreateName()));
- sql = sql.replace("#{create_by}",String.valueOf(t.getCreateBy()));
- sql = sql.replace("#{create_date}",String.valueOf(t.getCreateDate()));
- sql = sql.replace("#{update_name}",String.valueOf(t.getUpdateName()));
- sql = sql.replace("#{update_by}",String.valueOf(t.getUpdateBy()));
- sql = sql.replace("#{update_date}",String.valueOf(t.getUpdateDate()));
- sql = sql.replace("#{bpm_status}",String.valueOf(t.getBpmStatus()));
- sql = sql.replace("#{contractid}",String.valueOf(t.getContractid()));
- sql = sql.replace("#{applypayamount}",String.valueOf(t.getApplypayamount()));
- sql = sql.replace("#{totalamount}",String.valueOf(t.getTotalamount()));
- sql = sql.replace("#{invoiceno}",String.valueOf(t.getInvoiceno()));
- sql = sql.replace("#{invoiceamount}",String.valueOf(t.getInvoiceamount()));
- sql = sql.replace("#{invoicedate}",String.valueOf(t.getInvoicedate()));
- sql = sql.replace("#{paytype}",String.valueOf(t.getPaytype()));
- sql = sql.replace("#{auditdate}",String.valueOf(t.getAuditdate()));
- sql = sql.replace("#{partnerid}",String.valueOf(t.getPartnerid()));
- sql = sql.replace("#{projectid}",String.valueOf(t.getProjectid()));
- sql = sql.replace("#{applyerid}",String.valueOf(t.getApplyerid()));
- sql = sql.replace("#{remark}",String.valueOf(t.getRemark()));
- sql = sql.replace("#{supplierevaluate}",String.valueOf(t.getSupplierevaluate()));
- sql = sql.replace("#{supplierscore}",String.valueOf(t.getSupplierscore()));
- sql = sql.replace("#{UUID}",UUID.randomUUID().toString());
- return sql;
- }
- private void updateContractTotalInvoice(String cid,Double invoiceamount,String billtype) {
- String updateSql = "update t_b_contract c set c.totalinvoice = c.totalinvoice+? where c.id =? ";
- if(oConvertUtils.isNotEmpty(cid)) {
- switch (billtype) {
- case "service":
- break;
- case "purchase":
- updateSql = "update t_b_contract_p c set c.totalinvoice = c.totalinvoice+? where c.id =? ";
- break;
- default:
- break;
- }
- executeSql(updateSql,invoiceamount,cid);
- }
- }
- }
|