Explorar o código

八爪鱼签约管理模块开发

yurk %!s(int64=2) %!d(string=hai) anos
pai
achega
7b55e2bec9
Modificáronse 18 ficheiros con 830 adicións e 10 borrados
  1. 10 10
      fhKeeper/formulahousekeeper/octopus/config/index.js
  2. 30 0
      fhKeeper/formulahousekeeper/octopus/src/http.js
  3. 13 0
      fhKeeper/formulahousekeeper/octopus/src/routes.js
  4. 60 0
      fhKeeper/formulahousekeeper/ops-platform/pom.xml
  5. 47 0
      fhKeeper/formulahousekeeper/ops-platform/src/main/java/com/management/platform/controller/CompanySigningController.java
  6. 187 0
      fhKeeper/formulahousekeeper/ops-platform/src/main/java/com/management/platform/controller/ContractDetailController.java
  7. 59 0
      fhKeeper/formulahousekeeper/ops-platform/src/main/java/com/management/platform/entity/CompanySigning.java
  8. 141 0
      fhKeeper/formulahousekeeper/ops-platform/src/main/java/com/management/platform/entity/ContractDetail.java
  9. 44 0
      fhKeeper/formulahousekeeper/ops-platform/src/main/java/com/management/platform/entity/vo/ContractVO.java
  10. 16 0
      fhKeeper/formulahousekeeper/ops-platform/src/main/java/com/management/platform/mapper/CompanySigningMapper.java
  11. 16 0
      fhKeeper/formulahousekeeper/ops-platform/src/main/java/com/management/platform/mapper/ContractDetailMapper.java
  12. 22 0
      fhKeeper/formulahousekeeper/ops-platform/src/main/java/com/management/platform/service/CompanySigningService.java
  13. 21 0
      fhKeeper/formulahousekeeper/ops-platform/src/main/java/com/management/platform/service/ContractDetailService.java
  14. 68 0
      fhKeeper/formulahousekeeper/ops-platform/src/main/java/com/management/platform/service/impl/CompanySigningServiceImpl.java
  15. 45 0
      fhKeeper/formulahousekeeper/ops-platform/src/main/java/com/management/platform/service/impl/ContractDetailServiceImpl.java
  16. 19 0
      fhKeeper/formulahousekeeper/ops-platform/src/main/resources/mapper/CompanySigningMapper.xml
  17. 32 0
      fhKeeper/formulahousekeeper/ops-platform/src/main/resources/mapper/ContractDetailMapper.xml
  18. BIN=BIN
      fhKeeper/formulahousekeeper/ops-platform/src/main/resources/模板.docx

+ 10 - 10
fhKeeper/formulahousekeeper/octopus/config/index.js

@@ -1,18 +1,18 @@
 var path = require('path')
 
 //  var ip = '127.0.0.1'
-var ip = '192.168.2.4'
+//var ip = '192.168.2.4'
 // var ip = '47.101.180.183' 
 
-// var os = require('os'), ip = '', ifaces = os.networkInterfaces() // 获取本机ip
-// for (var i in ifaces) {
-//     for (var j in ifaces[i]) {
-//         var val = ifaces[i][j]
-//         if (val.family === 'IPv4' && val.address !== '127.0.0.1') {
-//             ip = val.address
-//         }
-//     } 
-// }
+var os = require('os'), ip = '', ifaces = os.networkInterfaces() // 获取本机ip
+for (var i in ifaces) {
+    for (var j in ifaces[i]) {
+        var val = ifaces[i][j]
+        if (val.family === 'IPv4' && val.address !== '127.0.0.1') {
+            ip = val.address
+        }
+    } 
+}
 
 module.exports = {
   build: {

+ 30 - 0
fhKeeper/formulahousekeeper/octopus/src/http.js

@@ -61,6 +61,35 @@ export default {
             }
         )
     },
+
+    previewFile(url, data, response, exception) {
+        let user = sessionStorage.getItem('user') , token = "";
+        if(user != null){
+            token = JSON.parse(user).id
+            // data.token = token
+        }
+                axios({
+                    method: 'post',
+                    url: handleUrl(url),
+                    data: handleParams(qs.stringify(data)),
+                    headers: {
+        //                 'Content-type': ' application/json;charset:utf-8;',
+                        'Content-type': ' application/x-www-form-urlencoded; charset=UTF-8',
+                        'Token': token
+                    },
+                    responseType: 'blob'
+                }).then(
+                    (result) => {
+                        response(handleResults(result))
+                    }
+                ).catch((error) => {
+                    if (exception) {
+                        exception(error)
+                    } else {
+                        console.log(error)
+                    }
+                })
+            },
     /*
      * get 请求
      * @param url
@@ -131,6 +160,7 @@ export default {
             }
         )
     },
+    
     /*
      * 下载文件用,导出 Excel 表格可以用这个方法
      * @param url

+ 13 - 0
fhKeeper/formulahousekeeper/octopus/src/routes.js

@@ -34,6 +34,9 @@ import PdfView from './views/pdf/pdfview';
 
 //客户管理
 import customer from './views/customer/list';
+
+//签约管理
+import signing from './views/signing/list';
 //专业管理
 import profession from './views/profession/list';
 
@@ -152,6 +155,16 @@ export const allRouters = [
             { path: '/customer', component: customer, name: '企业管理' }
         ]
     },
+    {
+        path: '/signing',
+        component: Home,
+        name: '签约管理',
+        iconCls: 'iconfont firerock-iconkehu',
+        leaf: true,
+        children: [
+            { path: '/signing', component: signing, name: '签约管理' }
+        ]
+    },
     {
         path: '/404',
         component: NotFound,

+ 60 - 0
fhKeeper/formulahousekeeper/ops-platform/pom.xml

@@ -77,6 +77,13 @@
             <artifactId>jodconverter</artifactId>
             <version>2.2.1</version>
         </dependency>
+
+        <dependency>
+            <groupId>fr.opensagres.xdocreport</groupId>
+            <artifactId>fr.opensagres.poi.xwpf.converter.pdf-gae</artifactId>
+            <version>2.0.1</version>
+        </dependency>
+
         <dependency>
             <groupId>org.artofsolving</groupId>
             <artifactId>jodconverter-core-3.0.jar</artifactId>
@@ -168,6 +175,59 @@
             <version>1.21</version>
         </dependency>
 
+
+        <dependency>
+            <groupId>org.jxls</groupId>
+            <artifactId>jxls</artifactId>
+            <version>2.6.0</version>
+            <exclusions>
+                <exclusion>
+                    <groupId>ch.qos.logback</groupId>
+                    <artifactId>logback-core</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+        <dependency>
+            <groupId>org.jxls</groupId>
+            <artifactId>jxls-poi</artifactId>
+            <version>1.2.0</version>
+        </dependency>
+        <dependency>
+            <groupId>fr.opensagres.xdocreport</groupId>
+            <artifactId>fr.opensagres.xdocreport.core</artifactId>
+            <version>2.0.2</version>
+        </dependency>
+        <dependency>
+            <groupId>fr.opensagres.xdocreport</groupId>
+            <artifactId>fr.opensagres.xdocreport.document</artifactId>
+            <version>2.0.2</version>
+        </dependency>
+        <dependency>
+            <groupId>fr.opensagres.xdocreport</groupId>
+            <artifactId>fr.opensagres.xdocreport.template</artifactId>
+            <version>2.0.2</version>
+        </dependency>
+        <dependency>
+            <groupId>fr.opensagres.xdocreport</groupId>
+            <artifactId>fr.opensagres.xdocreport.document.docx</artifactId>
+            <version>2.0.2</version>
+        </dependency>
+        <dependency>
+            <groupId>fr.opensagres.xdocreport</groupId>
+            <artifactId>fr.opensagres.xdocreport.template.freemarker</artifactId>
+            <version>2.0.2</version>
+        </dependency>
+        <dependency>
+            <groupId>org.freemarker</groupId>
+            <artifactId>freemarker</artifactId>
+            <version>2.3.23</version>
+        </dependency>
+        <dependency>
+            <groupId>commons-io</groupId>
+            <artifactId>commons-io</artifactId>
+            <version>2.5</version>
+        </dependency>
+
     </dependencies>
 
     <build>

+ 47 - 0
fhKeeper/formulahousekeeper/ops-platform/src/main/java/com/management/platform/controller/CompanySigningController.java

@@ -0,0 +1,47 @@
+package com.management.platform.controller;
+
+
+import com.management.platform.entity.CompanySigning;
+import com.management.platform.entity.vo.ContractVO;
+import com.management.platform.service.CompanySigningService;
+import com.management.platform.util.HttpRespMsg;
+import fr.opensagres.xdocreport.core.XDocReportException;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
+import java.io.IOException;
+
+/**
+ * <p>
+ *  前端控制器
+ * </p>
+ *
+ * @author Seyason
+ * @since 2023-01-31
+ */
+@RestController
+@RequestMapping("/company-signing")
+public class CompanySigningController {
+
+    @Resource
+    private CompanySigningService companySigningService;
+
+    @RequestMapping("/getList")
+    public HttpRespMsg getList(Integer companyId){
+        return companySigningService.getList(companyId);
+    }
+
+    @RequestMapping("/update")
+    public HttpRespMsg update(CompanySigning companySigning){
+        HttpRespMsg httpRespMsg=new HttpRespMsg();
+        if(!companySigningService.saveOrUpdate(companySigning)){
+            httpRespMsg.setError("验证失败");
+        }
+        return httpRespMsg;
+    }
+
+}
+

+ 187 - 0
fhKeeper/formulahousekeeper/ops-platform/src/main/java/com/management/platform/controller/ContractDetailController.java

@@ -0,0 +1,187 @@
+package com.management.platform.controller;
+
+import com.management.platform.entity.Company;
+import com.management.platform.entity.ContractDetail;
+import com.management.platform.service.CompanyService;
+import com.management.platform.service.ContractDetailService;
+import com.management.platform.util.HttpRespMsg;
+import fr.opensagres.poi.xwpf.converter.pdf.PdfConverter;
+import fr.opensagres.poi.xwpf.converter.pdf.PdfOptions;
+import fr.opensagres.xdocreport.core.XDocReportException;
+import fr.opensagres.xdocreport.document.IXDocReport;
+import fr.opensagres.xdocreport.document.registry.XDocReportRegistry;
+import fr.opensagres.xdocreport.template.IContext;
+import fr.opensagres.xdocreport.template.TemplateEngineKind;
+import org.apache.poi.xwpf.usermodel.XWPFDocument;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletResponse;
+import java.io.*;
+import java.math.BigDecimal;
+import java.net.URL;
+import java.time.LocalDate;
+import java.time.format.DateTimeFormatter;
+
+/**
+ * <p>
+ *  前端控制器
+ * </p>
+ *
+ * @author Seyason
+ * @since 2023-02-06
+ */
+@RestController
+@RequestMapping("/contract-detail")
+public class ContractDetailController {
+
+    @Resource
+    private ContractDetailService contractDetailService;
+
+    @Value(value = "${upload.path}")
+    private String path;
+
+
+
+    @Resource
+    private CompanyService companyService;
+
+    @RequestMapping("/detail")
+    public HttpRespMsg detail(Integer companyId){
+        return contractDetailService.detail(companyId);
+    }
+
+    @RequestMapping("/update")
+    public HttpRespMsg update(ContractDetail contractDetail, HttpServletResponse response) throws IOException, XDocReportException {
+        HttpRespMsg httpRespMsg=new HttpRespMsg();
+        Company company = companyService.getById(contractDetail.getCompanyId());
+        if(contractDetail.getSecondParty().equals("")){
+            contractDetail.setSecondParty(company.getCompanyName());
+        }
+        DateTimeFormatter df=DateTimeFormatter.ofPattern("yyyy-MM-dd");
+        if(contractDetail.getStartDate().equals("")){
+            contractDetail.setStartDate(LocalDate.now().format(df));
+        }
+        if(!contractDetailService.saveOrUpdate(contractDetail)){
+            httpRespMsg.setError("验证失败");
+        }
+        String fileName = contractDetail.getSoftwareName()+"销售合同-"+contractDetail.getSecondParty()+".docx";
+        LocalDate startDate;
+        if(contractDetail.getStartDate()!=null&&!contractDetail.getStartDate().equals("")){
+            startDate=LocalDate.parse(contractDetail.getStartDate(),df);
+        }else {
+            startDate=LocalDate.now();
+        }
+        File file=new File(path+fileName);
+        //如果文件之前存在 并且是打开的情况下 会报错 另一个程序正在使用此文件,进程无法访问
+        if(file.exists()){
+            file.delete();
+        }
+        LocalDate endDate=startDate.plusYears(contractDetail.getServiceDate());
+        //根据模板生成word文件
+        InputStream ins =this.getClass().getResourceAsStream("/模板.docx");
+        /*new FileInputStream(new File("C:\\upload\\工时管家系统销售合同-模板.docx"));*/
+        //注册xdocreport实例并加载FreeMarker模板引擎
+        IXDocReport report = XDocReportRegistry.getRegistry().loadReport(ins,
+                TemplateEngineKind.Freemarker);
+        //创建xdocreport上下文对象 
+        IContext context = report.createContext();
+        //创建要替换的文本变量
+        context.put("secondParty",contractDetail.getSecondParty());
+        context.put("secondPartyAddr", contractDetail.getSecondPartyAddr());
+        context.put("secondPartyContacts",contractDetail.getSecondPartyContacts() );
+        context.put("secondPartyTel",contractDetail.getSecondPartyTel() );
+        context.put("softwareName", contractDetail.getSoftwareName());
+        context.put("serviceDate", contractDetail.getServiceDate());
+        context.put("startDate",df.format(startDate));
+        context.put("endDate",df.format(endDate));
+        context.put("serviceChargeOfYear", contractDetail.getServiceChargeOfYear()==null?0:contractDetail.getServiceChargeOfYear());
+        context.put("customDevelopmentCosts", contractDetail.getCustomDevelopmentCosts()==null?0:contractDetail.getCustomDevelopmentCosts());
+        context.put("standardUnitPrice", contractDetail.getStandardUnitPrice()==null?0:contractDetail.getStandardUnitPrice());
+        context.put("firstOpenNum", contractDetail.getFirstOpenNum());
+        context.put("secondPartyAccount", contractDetail.getSecondPartyAccount());
+        BigDecimal bigDecimal=new BigDecimal(contractDetail.getServiceChargeOfYear()==null?0:contractDetail.getServiceChargeOfYear());
+        bigDecimal=bigDecimal.add(new BigDecimal(contractDetail.getCustomDevelopmentCosts()==null?0:contractDetail.getCustomDevelopmentCosts()));
+        context.put("allCost", bigDecimal.doubleValue());
+        context.put("secondPartyBankOfDeposit", contractDetail.getSecondPartyBankOfDeposit());
+        context.put("secondPartyBillingName",contractDetail.getSecondPartyBillingName() );
+        context.put("secondPartyTIN",contractDetail.getSecondPartyTIN() );
+        context.put("invoiceType",contractDetail.getInvoiceType());
+        //输出到本地目录
+        FileOutputStream out = new FileOutputStream(path+fileName);
+        report.process(context, out);
+        File newFile = new File(path+fileName.replaceAll("\\.docx","\\.pdf"));//转换之后文件生成的地址
+        if (newFile.exists()) {
+            newFile.delete();
+        }
+        //同时生成word文件转换的pdf文件
+        FileInputStream fileInputStream = new FileInputStream(path+fileName);
+        XWPFDocument xwpfDocument = new XWPFDocument(fileInputStream);
+        PdfOptions pdfOptions = PdfOptions.create();
+        FileOutputStream fileOutputStream = new FileOutputStream(path+fileName.replaceAll("\\.docx","\\.pdf"));
+        PdfConverter.getInstance().convert(xwpfDocument,fileOutputStream,pdfOptions);
+        fileInputStream.close();
+        fileOutputStream.close();
+        out.close();
+        ins.close();
+        httpRespMsg.data="/upload/"+fileName;
+        return httpRespMsg;
+    }
+
+    @RequestMapping("/preview")
+    public void preview(HttpServletResponse response,Integer companyId) {
+        ContractDetail contractDetail = contractDetailService.getById(companyId);
+        String fileName = contractDetail.getSoftwareName()+"销售合同-"+contractDetail.getSecondParty()+".pdf";
+        String filePath = path+fileName;
+        System.out.println("filePath:" + filePath);
+        File f = new File(filePath);
+        BufferedInputStream br = null;
+        OutputStream out = null;
+        try {
+            br = new BufferedInputStream(new FileInputStream(f));
+            byte[] bs = new byte[1024];
+            int len = 0;
+            response.reset(); // 非常重要
+            // 在线打开方式
+            URL u = new URL("file:///" + path + filePath);
+            String contentType = u.openConnection().getContentType();
+            response.setContentType(contentType);
+            response.setHeader("Content-Disposition", "inline;filename="
+                    + fileName);
+            out = response.getOutputStream();
+            while ((len = br.read(bs)) > 0) {
+                out.write(bs, 0, len);
+            }
+            out.flush();
+            out.close();
+            br.close();
+        } catch (IOException e) {
+            e.printStackTrace();
+        } finally {
+            if (out != null) {
+                try {
+                    out.close();
+                } catch (IOException e) {
+                    e.printStackTrace();
+                }
+            }
+        }
+    }
+
+    @RequestMapping("/finalize")
+    public HttpRespMsg contractFinalize(Integer companyId){
+        HttpRespMsg httpRespMsg=new HttpRespMsg();
+        ContractDetail contractDetail = contractDetailService.getById(companyId);
+        if(contractDetail!=null){
+            contractDetail.setFinalize(1);
+        }
+        if(!contractDetailService.updateById(contractDetail)){
+            httpRespMsg.setError("验证失败");
+        }
+        return httpRespMsg;
+    }
+}
+

+ 59 - 0
fhKeeper/formulahousekeeper/ops-platform/src/main/java/com/management/platform/entity/CompanySigning.java

@@ -0,0 +1,59 @@
+package com.management.platform.entity;
+
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableField;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author Seyason
+ * @since 2023-01-31
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+public class CompanySigning extends Model<CompanySigning> {
+
+    private static final long serialVersionUID=1L;
+
+    @TableId("company_id")
+    private Integer companyId;
+
+    /**
+     * 开通版本
+     */
+    @TableField("version")
+    private String version;
+
+    /**
+     * 签约单价
+     */
+    @TableField("contract_unit_price")
+    private Double contractUnitPrice;
+
+    /**
+     * 签约折扣
+     */
+    @TableField("contract_discount")
+    private Double contractDiscount;
+
+    /**
+     * 开单金额
+     */
+    @TableField("billing_amount")
+    private Double billingAmount;
+
+
+    @Override
+    protected Serializable pkVal() {
+        return this.companyId;
+    }
+
+}

+ 141 - 0
fhKeeper/formulahousekeeper/ops-platform/src/main/java/com/management/platform/entity/ContractDetail.java

@@ -0,0 +1,141 @@
+package com.management.platform.entity;
+
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import java.time.LocalDate;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableField;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author Seyason
+ * @since 2023-02-07
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+public class ContractDetail extends Model<ContractDetail> {
+
+    private static final long serialVersionUID=1L;
+
+    /**
+     * 公司id
+     */
+    @TableId("company_id")
+    private Integer companyId;
+
+    /**
+     * 乙方名称
+     */
+    @TableField("secondParty")
+    private String secondParty;
+
+    /**
+     * 乙方地址
+     */
+    @TableField("secondPartyAddr")
+    private String secondPartyAddr;
+
+    /**
+     * 乙方联系人
+     */
+    @TableField("secondPartyContacts")
+    private String secondPartyContacts;
+
+    /**
+     * 乙方电话
+     */
+    @TableField("secondPartyTel")
+    private String secondPartyTel;
+
+    /**
+     * 软件名称
+     */
+    @TableField("softwareName")
+    private String softwareName;
+
+    /**
+     * 服务周期
+     */
+    @TableField("serviceDate")
+    private Integer serviceDate;
+
+    /**
+     * 服务开始日期
+     */
+    @TableField("startDate")
+    private String startDate;
+
+    /**
+     * 年服务费
+     */
+    @TableField("serviceChargeOfYear")
+    private Double serviceChargeOfYear;
+
+    /**
+     * 定制开发费
+     */
+    @TableField("customDevelopmentCosts")
+    private Double customDevelopmentCosts;
+
+    /**
+     * 标准单价
+     */
+    @TableField("standardUnitPrice")
+    private Double standardUnitPrice;
+
+    /**
+     * 首次开通人数
+     */
+    @TableField("firstOpenNum")
+    private Integer firstOpenNum;
+
+    /**
+     * 乙方账号
+     */
+    @TableField("secondPartyAccount")
+    private String secondPartyAccount;
+
+    /**
+     * 乙方开户行
+     */
+    @TableField("secondPartyBankOfDeposit")
+    private String secondPartyBankOfDeposit;
+
+    /**
+     * 乙方开票名称
+     */
+    @TableField("secondPartyBillingName")
+    private String secondPartyBillingName;
+
+    /**
+     * 乙方纳税人识别号
+     */
+    @TableField("secondPartyTIN")
+    private String secondPartyTIN;
+
+    /**
+     * 乙方开具发票类型
+     */
+    @TableField("invoiceType")
+    private String invoiceType;
+
+    /**
+     * 是否定稿 0-否 1-是
+     */
+    @TableField("finalize")
+    private Integer finalize;
+
+
+    @Override
+    protected Serializable pkVal() {
+        return this.companyId;
+    }
+
+}

+ 44 - 0
fhKeeper/formulahousekeeper/ops-platform/src/main/java/com/management/platform/entity/vo/ContractVO.java

@@ -0,0 +1,44 @@
+package com.management.platform.entity.vo;
+
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+public class ContractVO {
+
+    //乙方名称
+    private String secondParty;
+    //乙方地址
+    private String secondPartyAddr;
+    //乙方联系人
+    private String secondPartyContacts;
+    //乙方电话
+    private String secondPartyTel;
+    //软件名称
+    private String softwareName;
+    //服务周期
+    private Integer serviceDate;
+    //服务开始日期
+    private String startDate;
+    //年服务费
+    private double serviceChargeOfYear;
+    //定制开发费
+    private double customDevelopmentCosts;
+    //标准单价
+    private double standardUnitPrice;
+    //首次开通人数
+    private Integer firstOpenNum;
+    //乙方账号
+    private String secondPartyAccount;
+    //乙方开户行
+    private String secondPartyBankOfDeposit;
+    //乙方开票名称
+    private String secondPartyBillingName;
+    //乙方纳税人识别号
+    private String secondPartyTIN;
+    //乙方开具发票类型
+    private String invoiceType;
+}

+ 16 - 0
fhKeeper/formulahousekeeper/ops-platform/src/main/java/com/management/platform/mapper/CompanySigningMapper.java

@@ -0,0 +1,16 @@
+package com.management.platform.mapper;
+
+import com.management.platform.entity.CompanySigning;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author Seyason
+ * @since 2023-01-31
+ */
+public interface CompanySigningMapper extends BaseMapper<CompanySigning> {
+
+}

+ 16 - 0
fhKeeper/formulahousekeeper/ops-platform/src/main/java/com/management/platform/mapper/ContractDetailMapper.java

@@ -0,0 +1,16 @@
+package com.management.platform.mapper;
+
+import com.management.platform.entity.ContractDetail;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author Seyason
+ * @since 2023-02-06
+ */
+public interface ContractDetailMapper extends BaseMapper<ContractDetail> {
+
+}

+ 22 - 0
fhKeeper/formulahousekeeper/ops-platform/src/main/java/com/management/platform/service/CompanySigningService.java

@@ -0,0 +1,22 @@
+package com.management.platform.service;
+
+import com.management.platform.entity.CompanySigning;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.management.platform.entity.vo.ContractVO;
+import com.management.platform.util.HttpRespMsg;
+import fr.opensagres.xdocreport.core.XDocReportException;
+
+import java.io.IOException;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author Seyason
+ * @since 2023-01-31
+ */
+public interface CompanySigningService extends IService<CompanySigning> {
+
+    HttpRespMsg getList(Integer companyId);
+}

+ 21 - 0
fhKeeper/formulahousekeeper/ops-platform/src/main/java/com/management/platform/service/ContractDetailService.java

@@ -0,0 +1,21 @@
+package com.management.platform.service;
+
+import com.management.platform.entity.ContractDetail;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.management.platform.entity.vo.ContractVO;
+import com.management.platform.util.HttpRespMsg;
+
+import java.io.IOException;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author Seyason
+ * @since 2023-02-06
+ */
+public interface ContractDetailService extends IService<ContractDetail> {
+
+    HttpRespMsg detail(Integer companyId);
+}

+ 68 - 0
fhKeeper/formulahousekeeper/ops-platform/src/main/java/com/management/platform/service/impl/CompanySigningServiceImpl.java

@@ -0,0 +1,68 @@
+package com.management.platform.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.management.platform.entity.Company;
+import com.management.platform.entity.CompanySigning;
+import com.management.platform.entity.vo.ContractVO;
+import com.management.platform.mapper.CompanyMapper;
+import com.management.platform.mapper.CompanySigningMapper;
+import com.management.platform.service.CompanySigningService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.management.platform.util.HttpRespMsg;
+import fr.opensagres.xdocreport.core.XDocReportException;
+import fr.opensagres.xdocreport.document.IXDocReport;
+import fr.opensagres.xdocreport.document.registry.XDocReportRegistry;
+import fr.opensagres.xdocreport.template.IContext;
+import fr.opensagres.xdocreport.template.TemplateEngineKind;
+import fr.opensagres.xdocreport.template.formatter.FieldsMetadata;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.io.*;
+import java.math.BigDecimal;
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
+import java.util.Optional;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author Seyason
+ * @since 2023-01-31
+ */
+@Service
+public class CompanySigningServiceImpl extends ServiceImpl<CompanySigningMapper, CompanySigning> implements CompanySigningService {
+
+    @Resource
+    private CompanySigningMapper companySigningMapper;
+    @Resource
+    private CompanyMapper companyMapper;
+
+    @Override
+    public HttpRespMsg getList(Integer companyId) {
+        HttpRespMsg httpRespMsg=new HttpRespMsg();
+        Company company = companyMapper.selectById(companyId);
+        CompanySigning companySigning = companySigningMapper.selectOne(new QueryWrapper<CompanySigning>().eq("company_id", companyId));
+        if(companySigning==null){
+            companySigning=new CompanySigning();
+        }
+        if(company.getPackageWorktime()==1){
+            companySigning.setVersion("基础版");
+        }
+        if(company.getPackageProject()==1){
+            companySigning.setVersion("专业版");
+        }
+        if(company.getPackageEngineering()==1){
+            companySigning.setVersion("建筑工程版");
+        }
+        if(company.getPackageOa()==1){
+            companySigning.setVersion("旗舰版");
+        }
+        httpRespMsg.data=companySigning;
+        return httpRespMsg;
+    }
+}

+ 45 - 0
fhKeeper/formulahousekeeper/ops-platform/src/main/java/com/management/platform/service/impl/ContractDetailServiceImpl.java

@@ -0,0 +1,45 @@
+package com.management.platform.service.impl;
+
+import com.management.platform.entity.ContractDetail;
+import com.management.platform.entity.vo.ContractVO;
+import com.management.platform.mapper.ContractDetailMapper;
+import com.management.platform.service.ContractDetailService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.management.platform.util.HttpRespMsg;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.math.BigDecimal;
+import java.time.LocalDate;
+import java.time.format.DateTimeFormatter;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author Seyason
+ * @since 2023-02-06
+ */
+@Service
+public class ContractDetailServiceImpl extends ServiceImpl<ContractDetailMapper, ContractDetail> implements ContractDetailService {
+
+    @Resource
+    private ContractDetailMapper contractDetailMapper;
+
+    @Override
+    public HttpRespMsg detail(Integer companyId) {
+        HttpRespMsg httpRespMsg=new HttpRespMsg();
+        ContractDetail contractDetail = contractDetailMapper.selectById(companyId);
+        if(contractDetail==null){
+            contractDetail=new ContractDetail();
+        }
+        contractDetail.setCompanyId(companyId);
+        httpRespMsg.data=contractDetail;
+        return httpRespMsg;
+    }
+}

+ 19 - 0
fhKeeper/formulahousekeeper/ops-platform/src/main/resources/mapper/CompanySigningMapper.xml

@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.management.platform.mapper.CompanySigningMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.management.platform.entity.CompanySigning">
+        <id column="company_id" property="companyId" />
+        <result column="version" property="version" />
+        <result column="contract_unit_price" property="contractUnitPrice" />
+        <result column="contract_discount" property="contractDiscount" />
+        <result column="billing_amount" property="billingAmount" />
+    </resultMap>
+
+    <!-- 通用查询结果列 -->
+    <sql id="Base_Column_List">
+        company_id, version, contract_unit_price, contract_discount, billing_amount
+    </sql>
+
+</mapper>

+ 32 - 0
fhKeeper/formulahousekeeper/ops-platform/src/main/resources/mapper/ContractDetailMapper.xml

@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.management.platform.mapper.ContractDetailMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.management.platform.entity.ContractDetail">
+        <id column="company_id" property="companyId" />
+        <result column="secondParty" property="secondParty" />
+        <result column="secondPartyAddr" property="secondPartyAddr" />
+        <result column="secondPartyContacts" property="secondPartyContacts" />
+        <result column="secondPartyTel" property="secondPartyTel" />
+        <result column="softwareName" property="softwareName" />
+        <result column="serviceDate" property="serviceDate" />
+        <result column="startDate" property="startDate" />
+        <result column="serviceChargeOfYear" property="serviceChargeOfYear" />
+        <result column="customDevelopmentCosts" property="customDevelopmentCosts" />
+        <result column="standardUnitPrice" property="standardUnitPrice" />
+        <result column="firstOpenNum" property="firstOpenNum" />
+        <result column="secondPartyAccount" property="secondPartyAccount" />
+        <result column="secondPartyBankOfDeposit" property="secondPartyBankOfDeposit" />
+        <result column="secondPartyBillingName" property="secondPartyBillingName" />
+        <result column="secondPartyTIN" property="secondPartyTIN" />
+        <result column="invoiceType" property="invoiceType" />
+        <result column="finalize" property="finalize" />
+    </resultMap>
+
+    <!-- 通用查询结果列 -->
+    <sql id="Base_Column_List">
+        company_id, secondParty, secondPartyAddr, secondPartyContacts, secondPartyTel, softwareName, serviceDate, startDate, serviceChargeOfYear, customDevelopmentCosts, standardUnitPrice, firstOpenNum, secondPartyAccount, secondPartyBankOfDeposit, secondPartyBillingName, secondPartyTIN, invoiceType, finalize
+    </sql>
+
+</mapper>

BIN=BIN
fhKeeper/formulahousekeeper/ops-platform/src/main/resources/模板.docx