|
|
@@ -12,6 +12,7 @@ import com.zhongzheng.modules.base.bo.CertificateTpQueryBo;
|
|
|
import com.zhongzheng.modules.base.domain.CertificateTp;
|
|
|
import com.zhongzheng.modules.base.mapper.CertificateTpMapper;
|
|
|
import com.zhongzheng.modules.base.service.ICertificateTpService;
|
|
|
+import com.zhongzheng.modules.base.vo.CertificatePhotoVo;
|
|
|
import com.zhongzheng.modules.base.vo.CertificateTpVo;
|
|
|
import com.zhongzheng.modules.course.domain.CourseBusiness;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
@@ -20,8 +21,13 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
|
import com.github.pagehelper.Page;
|
|
|
|
|
|
+import javax.imageio.ImageIO;
|
|
|
import javax.validation.Valid;
|
|
|
import javax.validation.Validation;
|
|
|
+import java.awt.*;
|
|
|
+import java.awt.image.BufferedImage;
|
|
|
+import java.io.File;
|
|
|
+import java.util.ArrayList;
|
|
|
import java.util.Collection;
|
|
|
import java.util.Collections;
|
|
|
import java.util.List;
|
|
|
@@ -91,6 +97,93 @@ public class CertificateTpServiceImpl extends ServiceImpl<CertificateTpMapper, C
|
|
|
return this.updateById(update);
|
|
|
}
|
|
|
|
|
|
+ @Override
|
|
|
+ public String makeCertificatePhoto(CertificateTpQueryBo bo) {
|
|
|
+ if("certificate01".equals(bo.getKeyValue())){
|
|
|
+ CertificatePhotoVo vo = new CertificatePhotoVo();
|
|
|
+ vo.setCode("XYZC21011234");
|
|
|
+ vo.setRealname("李盛仁");
|
|
|
+ vo.setIdCard("445224199901040003");
|
|
|
+ vo.setYear("2021");
|
|
|
+ vo.setType("专业");
|
|
|
+ vo.setMajor("网络班");
|
|
|
+ vo.setClassHours("42");
|
|
|
+ vo.setDateY("2022");
|
|
|
+ vo.setDateM("2");
|
|
|
+ vo.setDateD("16");
|
|
|
+ List<String> chapterList = new ArrayList<>();
|
|
|
+ chapterList.add("①.绿色施工");
|
|
|
+ chapterList.add("②.绿色施工");
|
|
|
+ chapterList.add("③.绿色施工");
|
|
|
+ chapterList.add("④.绿色施工");
|
|
|
+ chapterList.add("⑤.绿色施工");
|
|
|
+ chapterList.add("⑥.绿色施工");
|
|
|
+ chapterList.add("⑦.绿色施工");
|
|
|
+ chapterList.add("⑧.绿色施工");
|
|
|
+ vo.setChapterList(chapterList);
|
|
|
+ drawPic(vo);
|
|
|
+
|
|
|
+ }
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+
|
|
|
+ private String drawPic(CertificatePhotoVo entity){
|
|
|
+ Font font = new Font("微软雅黑", Font.PLAIN, 45);// 添加字体的属性设置
|
|
|
+
|
|
|
+ String projectUrl = "D:\\test\\";
|
|
|
+ String imgName = projectUrl + "out01.jpg";
|
|
|
+ try {
|
|
|
+ // 加载本地图片
|
|
|
+ String imageLocalUrl = projectUrl + "002.jpg";
|
|
|
+ BufferedImage imageLocal = ImageIO.read(new File(imageLocalUrl));
|
|
|
+ // 以本地图片为模板
|
|
|
+ Graphics2D g = imageLocal.createGraphics();
|
|
|
+
|
|
|
+ // 设置文本样式
|
|
|
+ g.setFont(font);
|
|
|
+ g.setColor(Color.BLACK);
|
|
|
+
|
|
|
+ g.drawString(entity.getCode(), 445, 290);
|
|
|
+ g.drawString(entity.getRealname(), 488, 562);
|
|
|
+ g.drawString(entity.getIdCard(), 1030, 562);
|
|
|
+ g.drawString(entity.getYear(), 1865, 562);
|
|
|
+ g.drawString(entity.getType(), 780, 679);
|
|
|
+ g.drawString(entity.getMajor(), 1175, 679);
|
|
|
+ g.drawString(entity.getClassHours(), 953, 788);
|
|
|
+ g.drawString(entity.getDateY(), 2280, 1599);
|
|
|
+ g.drawString(entity.getDateM(), 2505, 1599);
|
|
|
+ g.drawString(entity.getDateD(), 2712, 1599);
|
|
|
+ int x = 493;
|
|
|
+ int y = 999;
|
|
|
+ int i=0;
|
|
|
+ for(String chapterName :entity.getChapterList() ){
|
|
|
+ g.drawString(chapterName, x, y);
|
|
|
+ i++;
|
|
|
+ if(i%2==1){
|
|
|
+ x=1650;
|
|
|
+ }else{
|
|
|
+ x=493;
|
|
|
+ y+=80;
|
|
|
+ }
|
|
|
+ if(i>7){
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // 完成模板修改
|
|
|
+ g.dispose();
|
|
|
+ // 获取新文件的地址
|
|
|
+ File outputfile = new File(imgName);
|
|
|
+ // 生成新的合成过的用户二维码并写入新图片
|
|
|
+ ImageIO.write(imageLocal, "jpg", outputfile);
|
|
|
+ } catch (Exception e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ // 返回给页面的图片地址(因为绝对路径无法访问)
|
|
|
+ // imgName = Constants.PROJECT_URL + "codeImg/" + userId + ".png";
|
|
|
+
|
|
|
+ return imgName;
|
|
|
+ }
|
|
|
+
|
|
|
@Override
|
|
|
public List<CertificateTpVo> selectList(CertificateTpQueryBo bo) {
|
|
|
return this.baseMapper.selectList(bo);
|