Browse Source

fixerjian

he2802 1 year ago
parent
commit
edb37c07ad

BIN
zhongzheng-common/src/main/resources/static/004.png


BIN
zhongzheng-common/src/main/resources/static/005.jpg


BIN
zhongzheng-common/src/main/resources/static/006.jpg


+ 305 - 2
zhongzheng-system/src/main/java/com/zhongzheng/modules/base/service/impl/CertificateTpServiceImpl.java

@@ -178,13 +178,15 @@ public class CertificateTpServiceImpl extends ServiceImpl<CertificateTpMapper, C
         if(Validator.isEmpty(bo.getUserId())||Validator.isEmpty(bo.getGradeId())||Validator.isEmpty(bo.getGoodsId())){
             throw new CustomException("数据错误");
         }
+        bo.setPageSize(null);
+        bo.setPageNum(null);
         GoodsVo goodsVo = iGoodsService.selectDetail(bo.getGoodsId());
         //获取培训开始时间
         UserStudyRecordQueryBo studyRecordQueryBo = new UserStudyRecordQueryBo();
         studyRecordQueryBo.setUserId(bo.getUserId());
         studyRecordQueryBo.setGoodsId(bo.getGoodsId());
         studyRecordQueryBo.setGradeId(bo.getGradeId());
-        UserStudyRecordVo studyRecordVo = iUserStudyRecordService.queryLast(studyRecordQueryBo);
+        UserStudyRecordVo studyRecordVo = iUserStudyRecordService.queryFirst(studyRecordQueryBo);
         //获取培训结束时间
         ClassGradeUser classGradeUser = iClassGradeUserService.getOne(new LambdaQueryWrapper<ClassGradeUser>()
                 .eq(ClassGradeUser::getUserId, bo.getUserId())
@@ -508,7 +510,6 @@ public class CertificateTpServiceImpl extends ServiceImpl<CertificateTpMapper, C
             vo.setIdCard(userVo.getIdCard());
             String date = DateUtils.timestampToDate(goodsVo.getCreateTime());
             vo.setYear(date.substring(0, 4));
-            vo.setMajor("施工现场专业人员");
             String sex = "男";
             if(Validator.isNotEmpty(userVo.getSex())&&userVo.getSex()==2){
                 sex = "女";
@@ -528,6 +529,66 @@ public class CertificateTpServiceImpl extends ServiceImpl<CertificateTpMapper, C
             UserCertificateAddBo addBo = mergeData(bo,goodsVo,vo,tpVo.getTpId(),ossPath,moduleId);
             iUserCertificateService.insertByAddBo(addBo);
         }
+        else if("certificate10".equals(tpVo.getKeyValue())){
+            if(Validator.isEmpty(goodsVo.getMajorId())){
+                throw new CustomException("生成证书专业缺失");
+            }
+            MajorVo majorVo = iMajorService.queryById(goodsVo.getMajorId());
+            CertificatePhotoVo vo = new CertificatePhotoVo();
+            String code = "XYPX02YJ"+nowDate.substring(0, 4)+getCertificateCode();
+            vo.setCode(code);
+            vo.setRealname(userVo.getRealname());
+            vo.setIdCard(userVo.getIdCard());
+            String date = DateUtils.timestampToDate(goodsVo.getCreateTime());
+            vo.setYear(date.substring(0, 4));
+            String sex = "男";
+            if(Validator.isNotEmpty(userVo.getSex())&&userVo.getSex()==2){
+                sex = "女";
+            }
+            vo.setSex(sex);
+            vo.setClassHours(goodsVo.getClassHours().setScale( 0, BigDecimal.ROUND_HALF_UP )+"");
+            vo.setDateY(nowDate.substring(0, 4));
+            vo.setDateM(nowDate.substring(5, 7));
+            vo.setDateD(nowDate.substring(8, 10));
+            vo.setMajor(majorVo.getCategoryName());
+            vo.setTrainStartTime(studyRecordVo.getFirstStartTime()); //培训开始时间
+            vo.setTrainEndTime(classGradeUser.getPeriodWaitTime());//学时变为待审核时间,也是学习完成时间
+            List<String> chapterListTxt = changeChapterList2(chapterList);
+            vo.setChapterList(chapterListTxt);
+            String ossPath =drawPicErZao(vo);
+            UserCertificateAddBo addBo = mergeData(bo,goodsVo,vo,tpVo.getTpId(),ossPath,moduleId);
+            iUserCertificateService.insertByAddBo(addBo);
+        }
+        else if("certificate11".equals(tpVo.getKeyValue())){
+            if(Validator.isEmpty(goodsVo.getMajorId())){
+                throw new CustomException("生成证书专业缺失");
+            }
+            MajorVo majorVo = iMajorService.queryById(goodsVo.getMajorId());
+            CertificatePhotoVo vo = new CertificatePhotoVo();
+            String code = "XYPX02YJ"+nowDate.substring(0, 4)+getCertificateCode();
+            vo.setCode(code);
+            vo.setRealname(userVo.getRealname());
+            vo.setIdCard(userVo.getIdCard());
+            String date = DateUtils.timestampToDate(goodsVo.getCreateTime());
+            vo.setYear(date.substring(0, 4));
+            String sex = "男";
+            if(Validator.isNotEmpty(userVo.getSex())&&userVo.getSex()==2){
+                sex = "女";
+            }
+            vo.setSex(sex);
+            vo.setClassHours(goodsVo.getClassHours().setScale( 0, BigDecimal.ROUND_HALF_UP )+"");
+            vo.setDateY(nowDate.substring(0, 4));
+            vo.setDateM(nowDate.substring(5, 7));
+            vo.setDateD(nowDate.substring(8, 10));
+            vo.setMajor(majorVo.getCategoryName());
+            vo.setTrainStartTime(studyRecordVo.getFirstStartTime()); //培训开始时间
+            vo.setTrainEndTime(classGradeUser.getPeriodWaitTime());//学时变为待审核时间,也是学习完成时间
+            List<String> chapterListTxt = changeChapterList2(chapterList);
+            vo.setChapterList(chapterListTxt);
+            String ossPath =drawPicErJian(vo);
+            UserCertificateAddBo addBo = mergeData(bo,goodsVo,vo,tpVo.getTpId(),ossPath,moduleId);
+            iUserCertificateService.insertByAddBo(addBo);
+        }
     }
 
     private UserCertificateAddBo mergeData(ClassGradeUserQueryBo bo, GoodsVo goodsVo,CertificatePhotoVo vo,Long certificateTpId,String certificatePath,Long moduleId){
@@ -593,6 +654,57 @@ public class CertificateTpServiceImpl extends ServiceImpl<CertificateTpMapper, C
         return chapterListTxt;
     }
 
+    private List<String> changeChapterList2(List<CourseChapterVo> chapterList){
+        List<String> chapterListTxt = new ArrayList<>();
+        for(int i =0; i<chapterList.size(); i++){
+            String numTag = "";
+            if(i==0){
+                numTag = "1. ";
+            }
+            else if(i==1){
+                numTag = "2. ";
+            }
+            else if(i==2){
+                numTag = "3. ";
+            }
+            else if(i==3){
+                numTag = "4. ";
+            }
+            else if(i==4){
+                numTag = "5. ";
+            }
+            else if(i==5){
+                numTag = "6. ";
+            }
+            else if(i==6){
+                numTag = "7. ";
+            }
+            else if(i==7){
+                numTag = "8. ";
+            }
+            else if(i==8){
+                numTag = "9. ";
+            }
+            else if(i==9){
+                numTag = "10. ";
+            }
+            else if(i==10){
+                numTag = "11. ";
+            }
+            else if(i==11){
+                numTag = "12. ";
+            }
+            else if(i==12){
+                numTag = "13. ";
+            }
+            else if(i==13){
+                numTag = "14. ";
+            }
+            chapterListTxt.add(numTag+chapterList.get(i).getName());
+        }
+        return chapterListTxt;
+    }
+
     private String drawPic(CertificatePhotoVo entity){
         Font font = new Font("微软雅黑", Font.PLAIN, 45);// 添加字体的属性设置
         String projectUrl = "D:\\test\\";
@@ -808,6 +920,197 @@ public class CertificateTpServiceImpl extends ServiceImpl<CertificateTpMapper, C
         return imgName;
     }
 
+    private  String drawPicErZao(CertificatePhotoVo entity){
+        Font font = new Font("微软雅黑", Font.PLAIN, 31);// 添加字体的属性设置 微软雅黑
+        Font font2 = new Font("微软雅黑", Font.BOLD, 38);
+        String imgName = null;
+        try {
+            // 加载本地图片
+            InputStream imgStream = Thread.currentThread().getContextClassLoader().getResourceAsStream("static/005.jpg");
+            //        String imageLocalUrl = projectUrl + "003.jpg";
+            //         BufferedImage imageLocal = ImageIO.read(new File(imageLocalUrl));
+            BufferedImage imageLocal = ImageIO.read(imgStream);
+            // 以本地图片为模板
+            Graphics2D g = imageLocal.createGraphics();
+            g.setRenderingHint(RenderingHints.KEY_ANTIALIASING,RenderingHints.VALUE_ANTIALIAS_ON);
+            // 设置文本样式
+            g.setFont(font2);
+            g.setColor(Color.BLACK);
+            g.drawString(entity.getRealname(), 165, 486);
+
+            g.setFont(font);
+
+            g.drawString(entity.getCode(), 169, 236 );
+
+            g.drawString(entity.getRealname(), 126, 696);
+
+            g.drawString(entity.getIdCard(), 298, 696);
+
+            g.drawString("二级注册造价师", 677, 668);
+            if("必修".equals(entity.getMajor())){
+                g.drawString(entity.getMajor(), 768, 718);
+            }else{
+                g.drawString("选修("+entity.getMajor()+")", 705, 718);
+            }
+
+
+            if("必修".equals(entity.getMajor())){
+                g.drawString(entity.getClassHours(), 980, 696);
+                g.drawString("0", 1105, 696);
+            }else{
+                g.drawString("0", 980, 696);
+                g.drawString(entity.getClassHours(), 1105, 696);
+            }
+            Integer startY = 810;
+            Integer j = 0;
+            for(String name : entity.getChapterList()){
+                if(j<6){
+                    g.drawString(name, 300, startY);
+                    startY+=50;
+                }else{
+                    g.drawString("....", 300, startY);
+                    break;
+                }
+                j++;
+            }
+
+            g.drawString(DateUtils.timestampToDateFormat(entity.getTrainStartTime(),"yyyy.MM.dd"), 1214, 666);
+            g.drawString("至", 1279, 705);
+            g.drawString(DateUtils.timestampToDateFormat(entity.getTrainEndTime(),"yyyy.MM.dd"), 1214, 739);
+
+
+            g.drawString(entity.getDateY(), 842, 1967);
+            g.drawString(entity.getDateM(), 979, 1967);
+            g.drawString(entity.getDateD(), 1069, 1967);
+
+            InputStream logoStream = Thread.currentThread().getContextClassLoader().getResourceAsStream("static/001.png");
+            BufferedImage logoBuffered = ImageIO.read(logoStream);
+            g.drawImage(logoBuffered, 1012, 1666, 330, 330, null);
+
+            //二维码
+            String qrTxt = CERTIFICATE_HOST+"pages/certificate/index?code="+entity.getCode();
+            QRCodeWriter qrCodeWriter = new QRCodeWriter();
+            BitMatrix bitMatrix = qrCodeWriter.encode(qrTxt, BarcodeFormat.QR_CODE, 150, 150);
+            BufferedImage qrImage = toBufferedImage(bitMatrix);
+            // 在模板上添加用户二维码(地址,左边距,上边距,图片宽度,图片高度,未知)
+            g.drawImage(qrImage, 1233, 175, 150, 150, null);
+            // 完成模板修改
+            g.dispose();
+            // 获取新文件的地址
+            // 生成新的合成过的用户二维码并写入新图片
+            //        ImageIO.write(imageLocal, "jpg", outputfile);
+            //上传OSS
+            InputStream is =  bufferedImageToInputStream(imageLocal);
+            String ossPath = ossService.uploadInputStream(is,7);
+            if(imgStream!=null){
+                imgStream.close();
+            }
+            return ossPath;
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        // 返回给页面的图片地址(因为绝对路径无法访问)
+        //    imgName = Constants.PROJECT_URL + "codeImg/" + userId + ".png";
+
+        return imgName;
+    }
+
+    private  String drawPicErJian(CertificatePhotoVo entity){
+        Font font = new Font("微软雅黑", Font.PLAIN, 31);// 添加字体的属性设置 微软雅黑
+        Font font2 = new Font("微软雅黑", Font.BOLD, 38);
+        String imgName = null;
+        try {
+            // 加载本地图片
+            InputStream imgStream = Thread.currentThread().getContextClassLoader().getResourceAsStream("static/006.jpg");
+            //        String imageLocalUrl = projectUrl + "003.jpg";
+            //         BufferedImage imageLocal = ImageIO.read(new File(imageLocalUrl));
+            BufferedImage imageLocal = ImageIO.read(imgStream);
+            // 以本地图片为模板
+            Graphics2D g = imageLocal.createGraphics();
+            g.setRenderingHint(RenderingHints.KEY_ANTIALIASING,RenderingHints.VALUE_ANTIALIAS_ON);
+            // 设置文本样式
+            g.setFont(font2);
+            g.setColor(Color.BLACK);
+            g.drawString(entity.getRealname(), 165, 486);
+
+            g.setFont(font);
+
+            g.drawString(entity.getCode(), 169, 236 );
+
+            g.drawString(entity.getRealname(), 126, 696);
+
+            g.drawString(entity.getIdCard(), 298, 696);
+
+            g.drawString("二级注册建造师", 677, 668);
+            if("必修".equals(entity.getMajor())){
+                g.drawString(entity.getMajor(), 768, 718);
+            }else{
+                g.drawString("选修("+entity.getMajor()+")", 705, 718);
+            }
+
+
+            if("必修".equals(entity.getMajor())){
+                g.drawString(entity.getClassHours(), 980, 696);
+                g.drawString("0", 1105, 696);
+            }else{
+                g.drawString("0", 980, 696);
+                g.drawString(entity.getClassHours(), 1105, 696);
+            }
+            Integer startY = 810;
+            Integer j = 0;
+            for(String name : entity.getChapterList()){
+                if(j<14){
+                    g.drawString(name, 300, startY);
+                    startY+=50;
+                }else{
+                    g.drawString("....", 300, startY);
+                    break;
+                }
+                j++;
+            }
+
+            g.drawString(DateUtils.timestampToDateFormat(entity.getTrainStartTime(),"yyyy.MM.dd"), 1214, 666);
+            g.drawString("至", 1279, 705);
+            g.drawString(DateUtils.timestampToDateFormat(entity.getTrainEndTime(),"yyyy.MM.dd"), 1214, 739);
+
+
+            g.drawString(entity.getDateY(), 842, 1967);
+            g.drawString(entity.getDateM(), 979, 1967);
+            g.drawString(entity.getDateD(), 1069, 1967);
+
+            InputStream logoStream = Thread.currentThread().getContextClassLoader().getResourceAsStream("static/001.png");
+            BufferedImage logoBuffered = ImageIO.read(logoStream);
+            g.drawImage(logoBuffered, 1012, 1666, 330, 330, null);
+
+            //二维码
+            String qrTxt = CERTIFICATE_HOST+"pages/certificate/index?code="+entity.getCode();
+            QRCodeWriter qrCodeWriter = new QRCodeWriter();
+            BitMatrix bitMatrix = qrCodeWriter.encode(qrTxt, BarcodeFormat.QR_CODE, 150, 150);
+            BufferedImage qrImage = toBufferedImage(bitMatrix);
+            // 在模板上添加用户二维码(地址,左边距,上边距,图片宽度,图片高度,未知)
+            g.drawImage(qrImage, 1233, 175, 150, 150, null);
+            // 完成模板修改
+            g.dispose();
+            // 获取新文件的地址
+            // 生成新的合成过的用户二维码并写入新图片
+            //        ImageIO.write(imageLocal, "jpg", outputfile);
+            //上传OSS
+            InputStream is =  bufferedImageToInputStream(imageLocal);
+            String ossPath = ossService.uploadInputStream(is,7);
+            if(imgStream!=null){
+                imgStream.close();
+            }
+            return ossPath;
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        // 返回给页面的图片地址(因为绝对路径无法访问)
+        //    imgName = Constants.PROJECT_URL + "codeImg/" + userId + ".png";
+
+        return imgName;
+    }
+
+
     public InputStream bufferedImageToInputStream(BufferedImage image){
         ByteArrayOutputStream os = new ByteArrayOutputStream();
         try {