package com.product.contract.service; import com.product.common.lang.StringUtils; import com.product.contract.config.CmnConst; import com.product.contract.service.ide.IContractPaymentService; import com.product.core.dao.BaseDao; import com.product.core.entity.DataTableEntity; import com.product.core.entity.FieldSetEntity; import com.product.core.exception.BaseException; import com.product.core.permission.PermissionService; import com.product.core.service.support.AbstractBaseService; import com.product.core.service.support.QueryFilterService; import com.product.core.spring.context.SpringMVCContextHolder; import com.product.core.transfer.Transactional; import com.product.util.BaseUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import java.util.Date; /** * Copyright LX * * @Title: ContractPaymentService * @Project: product-server * @date: 2021-07-13 17:22 * @author: ZhouJie * @Description: 合同回款 */ @Component public class ContractPaymentService extends AbstractBaseService implements IContractPaymentService { @Autowired public BaseDao baseDao; @Autowired PermissionService permissionService; @Autowired QueryFilterService queryFilterService; /** * 保存合同回款 * @param fs * @return * @throws BaseException */ @Override @Transactional public String saveContractPayment(FieldSetEntity fs) throws BaseException { FieldSetEntity fspay = baseDao.getFieldSetEntityByFilter(CmnConst.LX_PROJECT_CONTRACT_INFO_SUB,"contract_info_uuid=?",new Object[]{fs.getString("contract_name")},false); Double amount_collected = fs.getDouble("amount_collected");//已回款金额 //回写回款金额到合同子表 FieldSetEntity fcosub = new FieldSetEntity(); if(fspay!=null){ fcosub.setTableName(CmnConst.LX_PROJECT_CONTRACT_INFO_SUB); fcosub.setValue("uuid",fspay.getUUID()); fcosub.setValue("payment_received",amount_collected);//已回款金额 baseDao.update(fcosub); } if(StringUtils.isEmpty(fs.getString(CmnConst.UUID))){ fs.setValue("org_level_uuid", SpringMVCContextHolder.getCurrentUser().getOrg_level_uuid()); fs.setValue("created_by", SpringMVCContextHolder.getCurrentUser().getUser_id()); fs.setValue("created_utc_datetime",new Date()); return baseDao.add(fs,true); } else { fs.setValue("updated_by", SpringMVCContextHolder.getCurrentUser().getUser_id()); fs.setValue("updated_utc_datetime",new Date()); baseDao.update(fs); return fs.getString(CmnConst.UUID); } } /** * 删除合同回款 * @param fs * @return * @throws BaseException */ @Override @Transactional public boolean deleteContractPayment(FieldSetEntity fs) throws BaseException { String uuid = fs.getUUID(); String[] uuids = uuid.split(","); return baseDao.delete(CmnConst.LX_PROJECT_CONTRACT_PAYMENT, BaseUtil.buildQuestionMarkFilter(CmnConst.UUID, uuids.length, true), uuids); } /** * 合同回款列表 * @param fs * @return */ public DataTableEntity listContractPayment(FieldSetEntity fs) { String queryFilter=permissionService.getDataFilter(CmnConst.ORG_LEVEL_UUID); if(StringUtils.isEmpty(queryFilter)) { queryFilter = CmnConst.CREATED_BY + " = " + SpringMVCContextHolder.getCurrentUser().getUser_id(); } if(!BaseUtil.dataTableIsEmpty(fs.getSubDataTable("systemSeniorQueryString"))){ queryFilter = queryFilter +" AND "+ queryFilterService.getQueryFilter(fs); } DataTableEntity dt = baseDao.listTable(CmnConst.LX_PROJECT_CONTRACT_PAYMENT,queryFilter,new Object[]{},null,null,fs.getInteger(CmnConst.PAGESIZE), fs.getInteger(CmnConst.CPAGE)); baseDao.loadPromptData(dt); return dt; } /** * 查询合同回款详情 * @param fs * @return * @throws BaseException */ public FieldSetEntity findContractPayment(FieldSetEntity fs) throws BaseException { return baseDao.getFieldSetEntity(CmnConst.LX_PROJECT_CONTRACT_PAYMENT,fs.getUUID(),true); } /** * 回款报表 * @param fs * @return * @throws BaseException */ public DataTableEntity paymentCollectionData()throws BaseException{ return baseDao.listTable("SELECT b.project_name,b.customer_name,a.contract_name,c.clause_content,d.invoice_num,e.apply_time,d.invoice_amount,f.collection_amount,f.collection_time FROM \n" + "product_project_contract_info a \n" + "LEFT JOIN product_project_business b on a.project_uuid=b.uuid\n" + "LEFT JOIN product_project_contract_info_sub c on a.uuid =c.contract_info_uuid\n" + "LEFT JOIN product_project_contract_invoice_info d on c.uuid=d.contract_terms\n" + "LEFT JOIN product_project_contract_invoice e on e.uuid=d.contract_invoice_uuid\n" + "LEFT JOIN product_project_contract_payment_collection f on d.invoice_num=f.invoice_num"); } }