zm
2024-07-26 e5c385b510c54107f9a4ab26d24603706c95cf9f
整体优化
已修改3个文件
123 ■■■■■ 文件已修改
src/main/java/com/product/contract/service/ContractInfoService.java 27 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/product/contract/service/ContractInvoiceService.java 51 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/product/contract/service/ContractPaymentService.java 45 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/product/contract/service/ContractInfoService.java
@@ -140,27 +140,14 @@
    public FieldSetEntity getContractInfoByName(FieldSetEntity fs) throws BaseException {
        FieldSetEntity fss = baseDao.getFieldSetEntity(CmnConst.LX_PROJECT_CONTRACT_INFO,fs.getUUID(),true);
        FieldSetEntity fsProject = baseDao.getFieldSetEntity(CmnConst.PRODUCT_PROJECT_BUSINESS,fss.getString("project_uuid"),false);
        DataTableEntity dt = fss.getSubDataTable(CmnConst.LX_PROJECT_CONTRACT_INFO_SUB);
        FieldSetEntity fsub = null;
        int invoiced = 0;//已开票金额
        int payment_received = 0;//已回款金额
        if(dt!=null && dt.getRows()>0){
            for (int i = 0; i < dt.getRows(); i++) {
                fsub = dt.getFieldSetEntity(i);
                String invo = fsub.getString("invoiced");
                String paym = fsub.getString("payment_received");
                if(BaseUtil.strIsNull(invo)){
                    invo = "0";
                }
                if(BaseUtil.strIsNull(paym)){
                    paym = "0";
                }
                invoiced += Double.parseDouble(invo);
                payment_received += Double.parseDouble(paym);
            }
        FieldSetEntity contractName = baseDao.getFieldSetEntityBySQL("SELECT sum(invoice_amount) invoice_amount FROM product_project_contract_invoice_info WHERE contract_invoice_uuid in(SELECT uuid FROM product_project_contract_invoice where contract_name=?)", new String[]{fs.getString("uuid")},false);
        if (contractName==null||StringUtils.isEmpty(contractName.getString("invoice_amount"))){
            fss.setValue("invoice_amount",0);
        }else {
            fss.setValue("invoice_amount",contractName.getString("invoice_amount"));
        }
        fss.setValue("invoiced",invoiced);
        fss.setValue("payment_received",payment_received);
        fss.setValue("collection_amount",0);
        fss.setValue("project_num",fsProject.getString("project_num"));
        fss.setValue("project_name",fsProject.getString("project_name"));
        return fss;
src/main/java/com/product/contract/service/ContractInvoiceService.java
@@ -44,30 +44,57 @@
    @Override
    @Transactional
    public String saveContractInvoice(FieldSetEntity fs) {
        FieldSetEntity fsinvo = baseDao.getFieldSetEntityByFilter(CmnConst.LX_PROJECT_CONTRACT_INFO_SUB,"contract_info_uuid=?",new Object[]{fs.getString("contract_name")},false);
        Double invoiced_amount = fs.getDouble("invoiced_amount");//已开票金额
        //回写已开票金额到合同子表
        FieldSetEntity fcosub = new FieldSetEntity();
        if(fsinvo!=null){
            fcosub.setTableName(CmnConst.LX_PROJECT_CONTRACT_INFO_SUB);
            fcosub.setValue("uuid",fsinvo.getUUID());
            fcosub.setValue("invoice_amount",invoiced_amount);//已开票金额
            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("org_level_uuid", SpringMVCContextHolder.getCurrentUser().getOrg_level_uuid());
            fs.setValue("created_utc_datetime",new Date());
            return baseDao.add(fs,true);
            String add = baseDao.add(fs, true);
            writeBackInvoice(fs);
            return add;
        } else {
            fs.setValue("updated_by", SpringMVCContextHolder.getCurrentUser().getUser_id());
            fs.setValue("updated_utc_datetime",new Date());
            baseDao.update(fs);
            writeBackInvoice(fs);
            return fs.getString(CmnConst.UUID);
        }
    }
    /**
     * 回写回款金额到合同
     * @param fs
     */
   private void  writeBackInvoice(FieldSetEntity fs){
       //按照条款回写到合同子表
       DataTableEntity subDataTable = fs.getSubDataTable(CmnConst.LX_PROJECT_CONTRACT_INVOICE_INFO);
       for (int i = 0; i <subDataTable.getRows() ; i++) {
           FieldSetEntity fsData = subDataTable.getFieldSetEntity(i);
           FieldSetEntity fsinvo = baseDao.getFieldSetEntityByFilter(CmnConst.LX_PROJECT_CONTRACT_INVOICE_INFO,"contract_terms=?",new Object[]{fsData.getString("contract_terms")},false);
           FieldSetEntity contractTerms = baseDao.getFieldSetEntityBySQL("SELECT sum(invoice_amount) invoice_amount FROM product_project_contract_invoice_info where contract_terms=?   GROUP BY contract_terms", new Object[]{fsData.getString("contract_terms")}, false);
           Double invoiced_amount = contractTerms.getDouble("invoice_amount");//已开票金额
           //回写已开票金额到合同子表
           FieldSetEntity fcosub = new FieldSetEntity();
           if(fsinvo!=null){
               fcosub.setTableName(CmnConst.LX_PROJECT_CONTRACT_INFO_SUB);
               fcosub.setValue("uuid",fsData.getString("contract_terms"));
               fcosub.setValue("invoice_amount",invoiced_amount);//已开票金额
               baseDao.update(fcosub);
           }
       }
       //按照合同回写到合同主表
       FieldSetEntity invoice_amount_fs = baseDao.getFieldSetEntityBySQL("SELECT sum(invoice_amount) invoice_amount FROM product_project_contract_invoice_info \n" +
               "where contract_invoice_uuid in (SELECT uuid FROM product_project_contract_invoice where contract_name=?)", new Object[]{fs.getString("contract_name")}, false);
       if(invoice_amount_fs!=null) {
           FieldSetEntity invoiceFs = new FieldSetEntity();
           invoiceFs.setTableName(CmnConst.LX_PROJECT_CONTRACT_INFO);
           invoiceFs.setValue("uuid",fs.getString("contract_name"));
           invoiceFs.setValue("invoice_amount",invoice_amount_fs.getString("invoice_amount"));//已开票金额
           baseDao.update(invoiceFs);
       }
   }
    /**
     * 删除合同开票
     * @param fs
     * @return
src/main/java/com/product/contract/service/ContractPaymentService.java
@@ -46,28 +46,51 @@
    @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);
            String add = baseDao.add(fs, true);
            writeBackPayment(fs);
            return add;
        } else {
            fs.setValue("updated_by", SpringMVCContextHolder.getCurrentUser().getUser_id());
            fs.setValue("updated_utc_datetime",new Date());
            baseDao.update(fs);
            writeBackPayment(fs);
            return fs.getString(CmnConst.UUID);
        }
    }
    private void writeBackPayment(FieldSetEntity fs){
        //回写发票号回款
        DataTableEntity dt = fs.getSubDataTable(CmnConst.LX_PROJECT_CONTRACT_PAYMENT_COLLECTION);
        for (int i = 0; i <dt.getRows() ; i++) {
            FieldSetEntity subFs = dt.getFieldSetEntity(i);
            FieldSetEntity collection_amount_fs = baseDao.getFieldSetBySQL("SELECT sum(collection_amount) collection_amount FROM `product_project_contract_payment_collection` where invoice_num=?", new String[]{subFs.getString("invoice_num")}, false);
            baseDao.executeUpdate("UPDATE product_project_contract_invoice_info set payment_amount=? where invoice_num=?",new String[]{collection_amount_fs.getString("collection_amount"),subFs.getString("invoice_num")});
        }
        //回写条款回款
        FieldSetEntity contractTerms = baseDao.getFieldSetBySQL("SELECT sum(collection_amount) collection_amount FROM `product_project_contract_payment_collection` \n" +
                "where contract_payment_uuid in(SELECT uuid FROM product_project_contract_payment where contract_terms=?)", new String[]{fs.getString("contract_terms")}, false);
        if (contractTerms!=null&&!StringUtils.isEmpty(contractTerms.getString("collection_amount"))) {
            FieldSetEntity contractInfoSub = new FieldSetEntity();
            contractInfoSub.setTableName(CmnConst.LX_PROJECT_CONTRACT_INFO_SUB);
            contractInfoSub.setValue("uuid",fs.getString("contract_terms"));
            contractInfoSub.setValue("payment_amount",contractTerms.getString("collection_amount"));
            baseDao.update(contractInfoSub);
        }
        //回写合同总回款
        FieldSetEntity contractName = baseDao.getFieldSetBySQL("SELECT sum(collection_amount) collection_amount FROM `product_project_contract_payment_collection` \n" +
                "where contract_payment_uuid in(SELECT uuid FROM product_project_contract_payment where contract_name=?)", new String[]{fs.getString("contract_name")}, false);
        if (contractName!=null&&!StringUtils.isEmpty(contractName.getString("collection_amount"))){
            FieldSetEntity contractInfo = new FieldSetEntity();
            contractInfo.setTableName(CmnConst.LX_PROJECT_CONTRACT_INFO);
            contractInfo.setValue("uuid",fs.getString("contract_name"));
            contractInfo.setValue("collection_amount",contractName.getString("collection_amount"));
            baseDao.update(contractInfo);
        }
    }
    /**
     * 删除合同回款