Forráskód Böngészése

1.增加电子签章白色背景透明处理。
2.定时更新下月投保单状态改为在保单生效前X天将待调整保单自动提交。

tomatozq 5 éve
szülő
commit
f6b2775102

+ 54 - 3
picc-admin-server/src/main/java/com/jpsoft/picc/modules/base/controller/AttachmentController.java

@@ -40,10 +40,13 @@ import org.springframework.web.bind.annotation.RequestMethod;
 import org.springframework.web.bind.annotation.ResponseBody;
 import org.springframework.web.multipart.MultipartFile;
 
+import javax.imageio.ImageIO;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
-import java.io.File;
-import java.io.OutputStream;
+import javax.swing.*;
+import java.awt.*;
+import java.awt.image.BufferedImage;
+import java.io.*;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
@@ -111,6 +114,51 @@ public class AttachmentController {
         return messageResult;
     }
 
+    public boolean transferAlpha2File(String imgSrc, String imgTarget) {
+        File file = new File(imgSrc);
+        InputStream is = null;
+        boolean result = false;
+
+        try {
+            is = new FileInputStream(file);
+            // 如果是MultipartFile类型,那么自身也有转换成流的方法:is = file.getInputStream();
+            BufferedImage bi = ImageIO.read(is);
+            Image image = (Image) bi;
+            ImageIcon imageIcon = new ImageIcon(image);
+            BufferedImage bufferedImage = new BufferedImage(imageIcon.getIconWidth(), imageIcon.getIconHeight(),
+                    BufferedImage.TYPE_4BYTE_ABGR);
+            Graphics2D g2D = (Graphics2D) bufferedImage.getGraphics();
+            g2D.drawImage(imageIcon.getImage(), 0, 0, imageIcon.getImageObserver());
+            int alpha = 0;
+            for (int j1 = bufferedImage.getMinY(); j1 < bufferedImage.getHeight(); j1++) {
+                for (int j2 = bufferedImage.getMinX(); j2 < bufferedImage.getWidth(); j2++) {
+                    int rgb = bufferedImage.getRGB(j2, j1);
+                    int R = (rgb & 0xff0000) >> 16;
+                    int G = (rgb & 0xff00) >> 8;
+                    int B = (rgb & 0xff);
+                    if (((255 - R) < 30) && ((255 - G) < 30) && ((255 - B) < 30)) {
+                        rgb = ((alpha + 1) << 24) | (rgb & 0x00ffffff);
+                    }
+                    bufferedImage.setRGB(j2, j1, rgb);
+                }
+            }
+            g2D.drawImage(bufferedImage, 0, 0, imageIcon.getImageObserver());
+            result = ImageIO.write(bufferedImage, "png", new File(imgTarget));// 直接输出文件
+        } catch (Exception e) {
+            e.printStackTrace();
+            result = false;
+        } finally {
+            if (is != null) {
+                try {
+                    is.close();
+                } catch (IOException e) {
+                    // TODO Auto-generated catch block
+                }
+            }
+        }
+        return result;
+    }
+
     @ApiOperation(value="pdf文档生成与下载")
     @RequestMapping(value = "/pub/attachment/downloadPolicyPdf",method = RequestMethod.GET)
     @ApiImplicitParams({
@@ -203,13 +251,16 @@ public class AttachmentController {
             if (StringUtils.isNotEmpty(company.getCompanyStampFile())) {
                 String ext = company.getCompanyStampFile().substring(company.getCompanyStampFile().lastIndexOf("."));
                 String watermarkLogoPath =  folderPath + File.separator + DateTime.now().toString("yyyyMMddHHmmssSSS") + ext;
+                String watermarkLogoPath2 =  folderPath + File.separator + DateTime.now().toString("yyyyMMddHHmmssSSS") + "-t" + ext;
 
                 //下载水印图片
                 boolean success = OSSUtil.download(company.getCompanyStampFile(),watermarkLogoPath);
 
                 if(success) {
                     try {
-                        Watermark.imageWatermark(filePath, watermarkFilePath, watermarkLogoPath);
+                        //水印背景变透明
+                        transferAlpha2File(watermarkLogoPath,watermarkLogoPath2);
+                        Watermark.imageWatermark(filePath, watermarkFilePath, watermarkLogoPath2);
                         filePath = watermarkFilePath;
                     }
                     catch (Exception e){

+ 2 - 1
picc-admin-server/src/main/java/com/jpsoft/picc/modules/business/controller/InsurancePolicyController.java

@@ -774,8 +774,9 @@ public class InsurancePolicyController {
         destPolicy.setUpdateTime(null);
         destPolicy.setFinishTime(null);
         destPolicy.setInsurancePolicyFile(null);
+        destPolicy.setSinglNumber(null);
 
-        //出账银行、入账银行、转账单号、保险代理人设置值暂没去掉,保留到下个月。
+        //出账银行、入账银行、保险代理人设置值暂没去掉,保留到下个月。
 
         //todo 如果有则判断关联当前投保单的下月投保记录是否存在
         boolean exist = insurancePolicyService.existByApplicationIdAndEffectiveDate(applicationId, destPolicy.getEffectiveDate());

+ 33 - 26
picc-admin-server/src/main/java/com/jpsoft/picc/scheduled/FissionWantedTask.java

@@ -11,7 +11,9 @@ import com.jpsoft.picc.modules.business.service.InsurancePolicyService;
 import com.jpsoft.picc.modules.common.constant.PolicyStatus;
 import lombok.extern.apachecommons.CommonsLog;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
 import org.joda.time.DateTime;
+import org.joda.time.Days;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -44,11 +46,8 @@ public class FissionWantedTask {
     }
 
     private void editInsurancePolicy(){
-        String nextYearMonth = DateTime.now().plusMonths(1).toString("yyyyMM");
-        String day = String.valueOf(DateTime.now().dayOfMonth().get());
-
         //获取待调整下月投保单
-        List<InsurancePolicy> insurancePolicyList = insurancePolicyService.toBeAdjustedPolicy(nextYearMonth,PolicyStatus.Draft.getValue() + "");
+        List<InsurancePolicy> insurancePolicyList = insurancePolicyService.toBeAdjustedPolicy(PolicyStatus.Draft.getValue() + "");
 
         int affectCount = 0;
 
@@ -57,36 +56,44 @@ public class FissionWantedTask {
 
             InsuranceDefinition insuranceDefinition = insuranceDefinitionService.get(insurancePolicy.getDefinitionId());
 
-            //险种截止日期
-            String cutOffTime = insuranceDefinition.getCutOffTime();
+            if (StringUtils.isEmpty(insuranceDefinition.getCutOffTime())) {
+                continue;
+            }
 
-            if(day.equals(cutOffTime)){
-                //如果当日为截至日期则修改
-                List<InsurancePolicyMember> insurancePolicyMemberList = insurancePolicyMemberService.findByPolicyId(id);
+            Integer limit = Integer.valueOf(insuranceDefinition.getCutOffTime());
 
-                boolean isUnChecked = false;
+            DateTime startTime = new DateTime(insurancePolicy.getStartTime());
 
-                for (InsurancePolicyMember insurancePolicyMember:insurancePolicyMemberList) {
-                    String memberStatus = insurancePolicyMember.getStatus();
-                    //花名册人员是否为已复核状态
-                    if(!("2").equals(memberStatus)){
-                        isUnChecked = true;
-                        break;
-                    }
-                }
+            int days = Days.daysBetween(DateTime.now(),startTime).getDays();
 
-                if(isUnChecked){
-                    insurancePolicy.setStatus(PolicyStatus.PendingTrial.getValue() + "");
-                }
-                else{
-                    insurancePolicy.setStatus(PolicyStatus.PendingMakePolicy.getValue() + "");
+            if (days>limit){
+                continue;
+            }
+
+            List<InsurancePolicyMember> insurancePolicyMemberList = insurancePolicyMemberService.findByPolicyId(id);
+
+            boolean isUnChecked = false;
+
+            for (InsurancePolicyMember insurancePolicyMember:insurancePolicyMemberList) {
+                String memberStatus = insurancePolicyMember.getStatus();
+                //花名册人员是否为已复核状态
+                if(!("2").equals(memberStatus)){
+                    isUnChecked = true;
+                    break;
                 }
+            }
 
-                insurancePolicyService.update(insurancePolicy);
-                affectCount++;
+            if(isUnChecked){
+                insurancePolicy.setStatus(PolicyStatus.PendingTrial.getValue() + "");
             }
+            else{
+                insurancePolicy.setStatus(PolicyStatus.PendingMakePolicy.getValue() + "");
+            }
+
+            insurancePolicyService.update(insurancePolicy);
+            affectCount++;
         }
 
-        log.warn(nextYearMonth + "已自动修改状态:" + affectCount + "条记录");
+        log.warn("已自动修改状态:" + affectCount + "条记录");
     }
 }

+ 3 - 3
picc-admin-server/src/main/resources/application-dev.yml

@@ -1,8 +1,8 @@
 spring:
   datasource:
-    url: jdbc:log4jdbc:mysql://192.168.33.20:3306/picc?autoReconnect=true&characterEncoding=utf8&serverTimezone=GMT%2B8
-    username: picc
-    password: picc
+    url: jdbc:log4jdbc:mysql://127.0.0.1:3306/picc?autoReconnect=true&characterEncoding=utf8&serverTimezone=GMT%2B8
+    username: root
+    password: root
   devtools:
     add-properties: false
     restart:

+ 1 - 1
picc-common/src/main/java/com/jpsoft/picc/modules/business/dao/InsurancePolicyDAO.java

@@ -31,7 +31,7 @@ public interface InsurancePolicyDAO {
 
     List<InsurancePolicy> findNextMonthPolicy(String companyId, String definitionId,Date startTime, Date endTime, String[] status);
 
-    List<InsurancePolicy> toBeAdjustedPolicy(String effectiveDate,String status);
+    List<InsurancePolicy> toBeAdjustedPolicy(String status);
 
     List<InsurancePolicy> mySearch(Map<String, Object> searchParams, List<Sort> sortList);
 

+ 1 - 1
picc-common/src/main/java/com/jpsoft/picc/modules/business/service/InsurancePolicyService.java

@@ -30,7 +30,7 @@ public interface InsurancePolicyService {
 
     List<InsurancePolicy> findNextMonthPolicy(String companyId, String definitionId,Date startTime, Date endTime,String[] status);
 
-    List<InsurancePolicy> toBeAdjustedPolicy(String effectiveDate,String status);
+    List<InsurancePolicy> toBeAdjustedPolicy(String status);
 
     void updatePolicyNumAndAmount(InsurancePolicy destPolicy, String subject);
 

+ 2 - 2
picc-common/src/main/java/com/jpsoft/picc/modules/business/service/impl/InsurancePolicyServiceImpl.java

@@ -73,8 +73,8 @@ public class InsurancePolicyServiceImpl implements InsurancePolicyService {
     }
 
     @Override
-    public List<InsurancePolicy> toBeAdjustedPolicy(String effectiveDate,String status){
-        return insurancePolicyDAO.toBeAdjustedPolicy(effectiveDate,status);
+    public List<InsurancePolicy> toBeAdjustedPolicy(String status){
+        return insurancePolicyDAO.toBeAdjustedPolicy(status);
     }
 
     @Override

+ 7 - 2
picc-common/src/main/java/com/jpsoft/picc/modules/common/utils/Watermark.java

@@ -41,7 +41,7 @@ public class Watermark extends PdfPageEventHelper {
         }
     }
 
-    public static void imageWatermark(String inputPath, String outputPath,String images) throws Exception{
+    public static void imageWatermark(String inputPath, String outputPath,String imageUrl) throws Exception{
 
         try{
             PdfReader reader = new PdfReader(inputPath);
@@ -49,7 +49,12 @@ public class Watermark extends PdfPageEventHelper {
             PdfGState gs1 = new PdfGState();
             gs1.setFillOpacity(0.8f);
 
-            Image image = Image.getInstance(images);
+            Image image = Image.getInstance(imageUrl);
+
+            //设置白色背景图透明
+            //如果是RGBImage,Image.Transparency数组的格式为{red起始值, red终止值, green起始值, green终止值, blue起始值, blue终止值};范围为0~255
+            //image.setTransparency(new int[] { 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF});
+
             int n = reader.getNumberOfPages();
             PdfContentByte under;
 

+ 7 - 5
picc-common/src/main/resources/mapper/business/InsurancePolicy.xml

@@ -291,11 +291,13 @@
         order by a.create_time asc
     </select>
     <select id="toBeAdjustedPolicy" resultMap="InsurancePolicyMap">
-        select * from business_insurance_policy
-        where del_flag = 0
-        and no_>1
-        and effective_date = #{effectiveDate}
-        and status_ = #{status}
+        <![CDATA[
+            select * from business_insurance_policy
+            where del_flag = 0
+            and no_>1
+            and status_ = #{status}
+            order by create_time asc
+        ]]>
     </select>
     <select id="mySearch" parameterType="hashmap" resultMap="InsurancePolicyMap">
         <![CDATA[

+ 8 - 3
picc-enterprise-server/src/main/resources/application-dev.yml

@@ -1,8 +1,13 @@
+server:
+  port: 8086
+  servlet:
+    context-path: /picc-enterprise-server
+
 spring:
   datasource:
-    url: jdbc:log4jdbc:mysql://192.168.33.20:3306/picc?autoReconnect=true&characterEncoding=utf8&serverTimezone=GMT%2B8
-    username: picc
-    password: picc
+    url: jdbc:log4jdbc:mysql://127.0.0.1:3306/picc?autoReconnect=true&characterEncoding=utf8&serverTimezone=GMT%2B8
+    username: root
+    password: root
   devtools:
     add-properties: false
     restart: