dcs 2 月之前
父节点
当前提交
f348abc594

+ 3 - 0
virgo.core/src/main/java/com/bosshand/virgo/core/config/ShiroConfig.java

@@ -61,6 +61,9 @@ public class ShiroConfig {
 		filterChainDefinitionMap.put("/configuration/**","anon");
 
 
+		filterChainDefinitionMap.put("/workarkContract/pdf/**", "anon");
+		filterChainDefinitionMap.put("/workarkContract/get/**", "anon");
+
 		filterChainDefinitionMap.put("/workarkWxPay/native/notify", "anon");
 		filterChainDefinitionMap.put("/workarkWxPay/refunds/notify", "anon");
 

+ 135 - 0
virgo.file/src/main/java/com/bosshand/virgo/file/controller/WorkarkContractController.java

@@ -0,0 +1,135 @@
+package com.bosshand.virgo.file.controller;
+
+import com.bosshand.virgo.core.response.Response;
+import com.bosshand.virgo.exception.BadRequestException;
+import com.bosshand.virgo.exception.Constant;
+import com.bosshand.virgo.file.model.WorkarkContract;
+import com.bosshand.virgo.file.service.WorkarkContractService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.net.URLEncoder;
+
+@RestController
+@RequestMapping({"workarkContract"})
+@Api(tags = {"WORKARK合同"})
+public class WorkarkContractController {
+
+    @Autowired
+    WorkarkContractService workarkContractService;
+
+    @ApiOperation("下载原合同文件")
+    @RequestMapping(value = "/get/{id}", method = RequestMethod.GET)
+    public void getFile(@PathVariable int id, final HttpServletResponse response) throws Exception {
+        byte[] data = null;
+        OutputStream outputStream = null;
+        try {
+            WorkarkContract workarkContract = workarkContractService.get(id);
+            data = workarkContractService.getByte(id);
+            response.setCharacterEncoding("UTF-8");
+            response.setContentType("application/x-msdownload");
+            response.setHeader("Content-Disposition", "attachment; filename=" + URLEncoder.encode(workarkContract.getName(), "UTF-8"));
+            OutputStream outputSream = response.getOutputStream();
+            outputSream.write(data);
+            outputSream.flush();
+        } catch (IOException e) {
+            throw new BadRequestException("Fail to write stream", Constant.RET_DOCUMENT_ERROR, e);
+        } finally {
+            if (outputStream != null) {
+                try {
+                    outputStream.close();
+                } catch (IOException e) {
+                }
+            }
+        }
+    }
+
+    @ApiOperation("展示合同PDF")
+    @RequestMapping(value = "/pdf/{id}", method = RequestMethod.GET)
+    public void getPDF(@PathVariable long id, final HttpServletResponse response) {
+        byte[] data = null;
+        OutputStream outputStream = null;
+        try {
+            data = workarkContractService.getPDF(id);
+            response.setCharacterEncoding("UTF-8");
+            response.setContentType("application/x-msdownload");
+            response.setHeader("Content-Disposition", "attachment; filename=" + URLEncoder.encode("合同.PDF", "UTF-8"));
+            OutputStream outputSream = response.getOutputStream();
+            outputSream.write(data);
+            outputSream.flush();
+        } catch (IOException e) {
+            throw new BadRequestException("Fail to write stream", Constant.RET_DOCUMENT_ERROR, e);
+        } finally {
+            if (outputStream != null) {
+                try {
+                    outputStream.close();
+                } catch (IOException e) {
+                }
+            }
+        }
+    }
+
+    @ApiOperation("合同列表")
+    @RequestMapping(value = "/{organizationId}", method = RequestMethod.GET)
+    public Response getFile(@PathVariable long organizationId) {
+        return Response.ok(workarkContractService.getList(organizationId));
+    }
+
+    @ApiOperation("上传合同")
+    @RequestMapping(value = "/{organizationId}", method = RequestMethod.POST)
+    public Response uploadFile(@ApiParam(name = "uploadFile", required = true) MultipartFile uploadFile, @PathVariable long organizationId) {
+        InputStream inputStream = null;
+        try {
+            inputStream = uploadFile.getInputStream();
+            return Response.ok(workarkContractService.create(inputStream, uploadFile.getOriginalFilename(), organizationId));
+        } catch (IOException e) {
+            return Response.fail(Constant.CODE_BAD_REQUEST, Constant.RET_INPUT_ERROR);
+        } finally {
+            if (inputStream != null) {
+                try {
+                    inputStream.close();
+                } catch (IOException e) {
+                }
+            }
+        }
+    }
+
+    @ApiOperation("删除合同")
+    @RequestMapping(value = "/{id}", method = RequestMethod.DELETE)
+    public Response deleteFile(@PathVariable long id) {
+        workarkContractService.delete(id);
+        return Response.ok();
+    }
+
+    @ApiOperation("更新合同")
+    @RequestMapping(value = "/update/{id}", method = RequestMethod.POST)
+    public Response updateFile(@ApiParam(name = "uploadFile", required = true) MultipartFile uploadFile, @PathVariable long id) {
+        InputStream inputStream = null;
+        try {
+            inputStream = uploadFile.getInputStream();
+            return Response.ok(workarkContractService.update(inputStream, uploadFile.getOriginalFilename(), id));
+        } catch (IOException e) {
+            return Response.fail(Constant.CODE_BAD_REQUEST, Constant.RET_INPUT_ERROR);
+        } finally {
+            if (inputStream != null) {
+                try {
+                    inputStream.close();
+                } catch (IOException e) {
+                }
+            }
+        }
+    }
+
+
+}

+ 18 - 0
virgo.file/src/main/java/com/bosshand/virgo/file/dao/WorkarkContractDao.java

@@ -0,0 +1,18 @@
+package com.bosshand.virgo.file.dao;
+
+
+import com.bosshand.virgo.file.model.WorkarkContract;
+import org.apache.ibatis.annotations.Mapper;
+
+import java.util.List;
+
+@Mapper
+public interface WorkarkContractDao {
+
+    List<WorkarkContract> getList(long organizationId);
+    WorkarkContract get(long id);
+    void insert(WorkarkContract workarkcontract);
+    void delete(long id);
+    void update(WorkarkContract workarkcontract);
+
+}

+ 73 - 0
virgo.file/src/main/java/com/bosshand/virgo/file/model/WorkarkContract.java

@@ -0,0 +1,73 @@
+package com.bosshand.virgo.file.model;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+
+import java.util.Date;
+
+/**
+ * WORKARK合同
+ */
+public class WorkarkContract {
+
+    private long id;
+
+    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date createDate;
+
+    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date updateDate;
+
+    private String name;
+
+    private Node node;
+
+    private long organizationId;
+
+    public long getId() {
+        return id;
+    }
+
+    public void setId(long id) {
+        this.id = id;
+    }
+
+    public Date getCreateDate() {
+        return createDate;
+    }
+
+    public void setCreateDate(Date createDate) {
+        this.createDate = createDate;
+    }
+
+    public Date getUpdateDate() {
+        return updateDate;
+    }
+
+    public void setUpdateDate(Date updateDate) {
+        this.updateDate = updateDate;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public Node getNode() {
+        return node;
+    }
+
+    public void setNode(Node node) {
+        this.node = node;
+    }
+
+    public long getOrganizationId() {
+        return organizationId;
+    }
+
+    public void setOrganizationId(long organizationId) {
+        this.organizationId = organizationId;
+    }
+}

+ 71 - 0
virgo.file/src/main/java/com/bosshand/virgo/file/service/WorkarkContractService.java

@@ -0,0 +1,71 @@
+package com.bosshand.virgo.file.service;
+
+import com.bosshand.virgo.exception.ServiceException;
+import com.bosshand.virgo.file.dao.WorkarkContractDao;
+import com.bosshand.virgo.file.model.WorkarkContract;
+import com.bosshand.virgo.file.util.AliyunOSSUtil;
+import com.bosshand.virgo.file.util.Doc2Pdf;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.io.ByteArrayInputStream;
+import java.io.InputStream;
+import java.util.List;
+
+@Service
+public class WorkarkContractService {
+
+    @Autowired
+    WorkarkContractDao workarkContractDao;
+
+    public WorkarkContract create(InputStream is, String name, long organizationId) throws ServiceException {
+        WorkarkContract contract = new WorkarkContract();
+        contract.setName(name);
+        contract.setOrganizationId(organizationId);
+        contract.setNode(AliyunOSSUtil.upload(is));
+        workarkContractDao.insert(contract);
+        return contract;
+    }
+
+    public void delete(long id) throws ServiceException {
+        WorkarkContract contract = get(id);
+        AliyunOSSUtil.delete(contract.getNode());
+        workarkContractDao.delete(id);
+    }
+
+    public List<WorkarkContract> getList(long organizationId) {
+        return workarkContractDao.getList(organizationId);
+    }
+
+    public WorkarkContract update(InputStream is, String originalFilename, long id) {
+        WorkarkContract contract = get(id);
+        AliyunOSSUtil.delete(contract.getNode());
+        contract.setName(originalFilename);
+        contract.setOrganizationId(contract.getOrganizationId());
+        contract.setNode(AliyunOSSUtil.upload(is));
+        workarkContractDao.update(contract);
+        return contract;
+    }
+
+    public byte[] getByte(long id) throws ServiceException {
+        WorkarkContract contract = get(id);
+        return AliyunOSSUtil.getByte(contract.getNode());
+    }
+
+    public InputStream getStream(long id) throws ServiceException {
+        return new ByteArrayInputStream(getByte(id));
+    }
+
+    public WorkarkContract get(long id) {
+        WorkarkContract contract = workarkContractDao.get(id);
+        if (contract == null) {
+            throw new ServiceException("Can not find the contract");
+        }
+        return contract;
+    }
+
+    public byte[] getPDF(long id) {
+        return Doc2Pdf.doc2pdf(getByte(id));
+    }
+
+}

+ 36 - 0
virgo.file/src/main/resources/mapper/WorkarkContractMapper.xml

@@ -0,0 +1,36 @@
+<!DOCTYPE mapper
+        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+
+<mapper namespace="com.bosshand.virgo.file.dao.WorkarkContractDao">
+
+    <resultMap type="com.bosshand.virgo.file.model.WorkarkContract" id="result" >
+        <id column="id" property="id"/>
+        <id column="organizationId" property="organizationId"/>
+        <id column="name" property="name"/>
+        <id column="createDate" property="createDate"/>
+        <id column="updateDate" property="updateDate"/>
+        <id column="node" property="node" typeHandler="com.bosshand.virgo.core.typehandler.BlobTypeHandler"/>
+    </resultMap>
+
+    <select id="get" resultMap="result">
+        select * from workark_contract where id = #{id}
+    </select>
+
+    <select id="getList" resultMap="result">
+        select * from workark_contract where organizationId = #{organizationId}
+    </select>
+
+    <delete id="delete">
+        delete from workark_contract where id = #{id}
+    </delete>
+
+    <insert id="insert" parameterType="com.bosshand.virgo.file.model.WorkarkContract" useGeneratedKeys="true" keyProperty="id">
+        INSERT into workark_contract(organizationId, name, createDate, node) values(#{organizationId}, #{name}, now(), #{node, typeHandler=com.bosshand.virgo.core.typehandler.BlobTypeHandler})
+    </insert>
+
+    <update id="update" parameterType="com.bosshand.virgo.file.model.WorkarkContract">
+        update file_node set updateDate = now(), name = #{name}, node = #{node, typeHandler=com.bosshand.virgo.core.typehandler.BlobTypeHandler} where id = #{id}
+    </update>
+
+</mapper>