Explorar o código

Merge remote-tracking branch 'origin/master'

ezhizao_zx hai 11 meses
pai
achega
196de37c80
Modificáronse 13 ficheiros con 445 adicións e 32 borrados
  1. 7 3
      src/main/java/cn/ezhizao/common/utils/pdf/PdfUtils.java
  2. 144 0
      src/main/java/cn/ezhizao/project/business/conversion/controller/BizProductDrawingConversionController.java
  3. 52 0
      src/main/java/cn/ezhizao/project/business/conversion/domain/BizProductDrawingConversion.java
  4. 30 0
      src/main/java/cn/ezhizao/project/business/conversion/mapper/BizProductDrawingConversionMapper.java
  5. 32 0
      src/main/java/cn/ezhizao/project/business/conversion/service/IBizProductDrawingConversionService.java
  6. 44 0
      src/main/java/cn/ezhizao/project/business/conversion/service/impl/BizProductDrawingConversionServiceImpl.java
  7. 9 0
      src/main/java/cn/ezhizao/project/business/product/controller/BizProductController.java
  8. 69 28
      src/main/java/cn/ezhizao/project/business/technologicalProcessDetailDrawing/controller/BizTechnologicalProcessDetailDrawingController.java
  9. 6 0
      src/main/java/cn/ezhizao/project/business/technologicalProcessDetailDrawing/mapper/BizTechnologicalProcessDetailDrawingMapper.java
  10. 5 0
      src/main/java/cn/ezhizao/project/business/technologicalProcessDetailDrawing/service/IBizTechnologicalProcessDetailDrawingService.java
  11. 5 0
      src/main/java/cn/ezhizao/project/business/technologicalProcessDetailDrawing/service/impl/BizTechnologicalProcessDetailDrawingServiceImpl.java
  12. 33 0
      src/main/resources/mybatis/business/conversion/BizProductDrawingConversionMapper.xml
  13. 9 1
      src/main/resources/mybatis/business/technologicalProcessDetailDrawing/BizTechnologicalProcessDetailDrawingMapper.xml

+ 7 - 3
src/main/java/cn/ezhizao/common/utils/pdf/PdfUtils.java

@@ -121,7 +121,7 @@ public class PdfUtils {
      * @throws DocumentException
      */
     public static ByteArrayOutputStream addImage(String inputFile, String imagePath, float x, float y, float width,
-                                                 float height,int rotation) throws IOException, DocumentException {
+                                                 float height,int rotation,float opacity) throws IOException, DocumentException {
         // 读取原pdf
         PdfReader reader = new PdfReader(inputFile);
         ByteArrayOutputStream bos = new ByteArrayOutputStream();
@@ -131,14 +131,14 @@ public class PdfUtils {
         // 给每一页添加水印
         for (int i = 1; i <= reader.getNumberOfPages(); i++) {
             PdfContentByte waterMark = stamper.getOverContent(i);
-            addImage(waterMark, imagePath, x, y, width, height,rotation);
+            addImage(waterMark, imagePath, x, y, width, height,rotation,opacity);
         }
         stamper.close();
 
         return bos;
     }
 
-    private static void addImage(PdfContentByte waterMar, String imagePath, float x, float y, float width, float height,int rotation)
+    private static void addImage(PdfContentByte waterMar, String imagePath, float x, float y, float width, float height,int rotation, float opacity)
             throws DocumentException, IOException {
         waterMar.beginText();
         // 设置水印对齐方式 水印内容 X坐标 Y坐标 旋转角度
@@ -146,7 +146,11 @@ public class PdfUtils {
         img.setAbsolutePosition(x, y);
         img.scaleAbsolute(width, height);
         System.out.println(img.getImageRotation()+rotation);
+        PdfGState gs = new PdfGState();
+        // 设置填充字体不透明度为0.2f
+        gs.setFillOpacity(opacity);
         img.setRotationDegrees(rotation);
+        waterMar.setGState(gs);
         waterMar.addImage(img);
         // 设置水印颜色
         waterMar.setColorFill(BaseColor.GRAY);

+ 144 - 0
src/main/java/cn/ezhizao/project/business/conversion/controller/BizProductDrawingConversionController.java

@@ -0,0 +1,144 @@
+package cn.ezhizao.project.business.conversion.controller;
+
+import java.time.LocalDate;
+import java.time.YearMonth;
+import java.time.ZoneId;
+import java.util.*;
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletResponse;
+
+import cn.ezhizao.common.utils.poi.ExcelUtil;
+import cn.ezhizao.framework.aspectj.lang.annotation.Log;
+import cn.ezhizao.framework.aspectj.lang.enums.BusinessType;
+import cn.ezhizao.framework.web.controller.BaseController;
+import cn.ezhizao.framework.web.domain.AjaxResult;
+import cn.ezhizao.framework.web.page.TableDataInfo;
+import cn.ezhizao.project.business.conversion.domain.BizProductDrawingConversion;
+import cn.ezhizao.project.business.conversion.service.IBizProductDrawingConversionService;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * 产品电子化率记录Controller
+ *
+ * @author ezhizao
+ * @date 2024-07-16
+ */
+@RestController
+@RequestMapping("/business/conversion")
+public class BizProductDrawingConversionController extends BaseController
+{
+    @Resource
+    private IBizProductDrawingConversionService bizProductDrawingConversionService;
+
+    /**
+     * 查询产品电子化率记录列表
+     */
+    @GetMapping("/list")
+    public AjaxResult list(BizProductDrawingConversion bizProductDrawingConversion) throws NoSuchFieldException, IllegalAccessException
+    {
+        if (bizProductDrawingConversion.getYear()!=null ){
+            int year = Integer.parseInt(bizProductDrawingConversion.getYear());
+            // 将 LocalDate 转换为 Date
+            LocalDate startLocalDate = YearMonth.of(year, 1).atDay(1);
+            LocalDate endLocalDate = YearMonth.of(year, 12).atEndOfMonth();
+
+            // 使用 atStartOfDay 将 LocalDate 转换为 Date
+            Date startTime = Date.from(startLocalDate.atStartOfDay(ZoneId.systemDefault()).toInstant());
+            Date endTime = Date.from(endLocalDate.atStartOfDay(ZoneId.systemDefault()).toInstant());
+
+            bizProductDrawingConversion.setStartTime(startTime);
+            bizProductDrawingConversion.setEndTime(endTime);
+        }
+        List<BizProductDrawingConversion> list = bizProductDrawingConversionService.getList(bizProductDrawingConversion);
+
+        List<BizProductDrawingConversion> bizProductDrawingConversions = filterByMonth(list);
+        return success(bizProductDrawingConversions);
+    }
+
+    public static List<BizProductDrawingConversion> filterByMonth(List<BizProductDrawingConversion> list) {
+        Map<Integer, BizProductDrawingConversion> latestRecords = new HashMap<>();
+
+        for (BizProductDrawingConversion record : list) {
+            Calendar cal = Calendar.getInstance();
+            cal.setTime(record.getDate());
+            int month = cal.get(Calendar.MONTH) + 1; // Calendar.MONTH 是从0开始的,所以需要+1
+            int year = cal.get(Calendar.YEAR);
+
+            // 将月份和年份组合成一个唯一的键
+            int key = (year * 100) + month;
+
+            if (!latestRecords.containsKey(key) || record.getDate().after(latestRecords.get(key).getDate())) {
+                latestRecords.put(key, record);
+            }
+        }
+
+        // 将 Map 转换为 List 返回
+        return new ArrayList<>(latestRecords.values());
+    }
+
+    /**
+     * 导出产品电子化率记录列表
+     */
+    @PreAuthorize("@ss.hasPermi('business:conversion:export')")
+    @Log(title = "产品电子化率记录", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(HttpServletResponse response, BizProductDrawingConversion bizProductDrawingConversion) throws NoSuchFieldException, IllegalAccessException
+    {
+        setTenantId(bizProductDrawingConversion);
+        List<BizProductDrawingConversion> list = bizProductDrawingConversionService.getList(bizProductDrawingConversion);
+        ExcelUtil<BizProductDrawingConversion> util = new ExcelUtil<BizProductDrawingConversion>(BizProductDrawingConversion.class);
+        util.exportExcel(response, list, "产品电子化率记录数据");
+    }
+
+    /**
+     * 获取产品电子化率记录详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('business:conversion:query')")
+    @GetMapping(value = "/{id}")
+    public AjaxResult getInfo(@PathVariable("id") Long id)
+    {
+        return success(bizProductDrawingConversionService.getById(id));
+    }
+
+    /**
+     * 新增产品电子化率记录
+     */
+    @Log(title = "产品电子化率记录", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody BizProductDrawingConversion bizProductDrawingConversion) throws NoSuchFieldException, IllegalAccessException
+    {
+        bizProductDrawingConversion.setDate(new Date());
+        return toAjax(bizProductDrawingConversionService.save(bizProductDrawingConversion));
+    }
+
+    /**
+     * 修改产品电子化率记录
+     */
+    @PreAuthorize("@ss.hasPermi('business:conversion:edit')")
+    @Log(title = "产品电子化率记录", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody BizProductDrawingConversion bizProductDrawingConversion) throws NoSuchFieldException, IllegalAccessException
+    {
+        setTenantId(bizProductDrawingConversion);
+        return toAjax(bizProductDrawingConversionService.updateById(bizProductDrawingConversion));
+    }
+
+    /**
+     * 删除产品电子化率记录
+     */
+    @PreAuthorize("@ss.hasPermi('business:conversion:remove')")
+    @Log(title = "产品电子化率记录", businessType = BusinessType.DELETE)
+	@DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable List<Long> ids)
+    {
+        return toAjax(bizProductDrawingConversionService.removeBatchByIds(ids));
+    }
+}

+ 52 - 0
src/main/java/cn/ezhizao/project/business/conversion/domain/BizProductDrawingConversion.java

@@ -0,0 +1,52 @@
+package cn.ezhizao.project.business.conversion.domain;
+
+import java.util.Date;
+
+import cn.ezhizao.framework.aspectj.lang.annotation.Excel;
+import cn.ezhizao.framework.web.domain.BaseEntity;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.baomidou.mybatisplus.annotation.TableName;
+
+import lombok.Data;
+import io.swagger.annotations.ApiModelProperty;
+
+
+/**
+ * 产品电子化率记录对象 biz_product_drawing_conversion
+ *
+ * @author ezhizao
+ * @date 2024-07-16
+ */
+@Data
+@TableName(value = "biz_product_drawing_conversion")
+public class BizProductDrawingConversion extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 租户id,厂别或类型1:Ⅰ类2:Ⅱ类 */
+    @ApiModelProperty(value = "${comment}")
+    private Long tenantId;
+
+    /** 日期 */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @Excel(name = "日期", width = 30, dateFormat = "yyyy-MM-dd")
+    @ApiModelProperty(value = "日期")
+    private Date date;
+
+    /** 电子化率基数 */
+    @Excel(name = "电子化率基数")
+    @ApiModelProperty(value = "电子化率基数")
+    private Long number;
+
+
+    @TableField(exist = false)
+    private String year;
+
+    @TableField(exist = false)
+    private Date startTime;
+
+    @TableField(exist = false)
+    private Date endTime;
+
+}

+ 30 - 0
src/main/java/cn/ezhizao/project/business/conversion/mapper/BizProductDrawingConversionMapper.java

@@ -0,0 +1,30 @@
+package cn.ezhizao.project.business.conversion.mapper;
+
+import java.util.List;
+
+import cn.ezhizao.project.business.conversion.domain.BizProductDrawingConversion;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * 产品电子化率记录Mapper接口
+ *
+ * @author ezhizao
+ * @date 2024-07-16
+ */
+public interface BizProductDrawingConversionMapper extends BaseMapper<BizProductDrawingConversion>
+{
+    /**
+     * 查询产品电子化率记录列表
+     *
+     * @param bizProductDrawingConversion 产品电子化率记录
+     * @return 产品电子化率记录集合
+     */
+    public List<BizProductDrawingConversion> getList(BizProductDrawingConversion bizProductDrawingConversion);
+
+    /**
+     * 物理删除
+     * @param bizProductDrawingConversion
+     * @return 删除结果
+    */
+    public int physicalDelete(BizProductDrawingConversion bizProductDrawingConversion);
+}

+ 32 - 0
src/main/java/cn/ezhizao/project/business/conversion/service/IBizProductDrawingConversionService.java

@@ -0,0 +1,32 @@
+package cn.ezhizao.project.business.conversion.service;
+
+import java.util.List;
+
+import cn.ezhizao.project.business.conversion.domain.BizProductDrawingConversion;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+
+/**
+ * 产品电子化率记录Service接口
+ *
+ * @author ezhizao
+ * @date 2024-07-16
+ */
+public interface IBizProductDrawingConversionService extends IService<BizProductDrawingConversion>
+{
+    /**
+     * 查询产品电子化率记录列表
+     *
+     * @param bizProductDrawingConversion 产品电子化率记录
+     * @return 产品电子化率记录集合
+     */
+    public List<BizProductDrawingConversion> getList(BizProductDrawingConversion bizProductDrawingConversion);
+
+    /**
+     * 物理删除
+     * @param bizProductDrawingConversion
+     * @return 删除结果
+     */
+    public int physicalDelete(BizProductDrawingConversion bizProductDrawingConversion);
+
+}

+ 44 - 0
src/main/java/cn/ezhizao/project/business/conversion/service/impl/BizProductDrawingConversionServiceImpl.java

@@ -0,0 +1,44 @@
+package cn.ezhizao.project.business.conversion.service.impl;
+
+import java.util.List;
+import javax.annotation.Resource;
+
+import cn.ezhizao.project.business.conversion.domain.BizProductDrawingConversion;
+import cn.ezhizao.project.business.conversion.mapper.BizProductDrawingConversionMapper;
+import cn.ezhizao.project.business.conversion.service.IBizProductDrawingConversionService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * 产品电子化率记录Service业务层处理
+ *
+ * @author ezhizao
+ * @date 2024-07-16
+ */
+@Service
+public class BizProductDrawingConversionServiceImpl  extends ServiceImpl<BizProductDrawingConversionMapper, BizProductDrawingConversion> implements IBizProductDrawingConversionService
+{
+    @Resource
+    private BizProductDrawingConversionMapper bizProductDrawingConversionMapper;
+
+    /**
+     * 查询产品电子化率记录列表
+     *
+     * @param bizProductDrawingConversion 产品电子化率记录
+     * @return 产品电子化率记录
+     */
+    @Override
+    public List<BizProductDrawingConversion> getList(BizProductDrawingConversion bizProductDrawingConversion)
+    {
+        return bizProductDrawingConversionMapper.getList(bizProductDrawingConversion);
+    }
+
+    /**
+     * 物理删除
+     * @param bizProductDrawingConversion
+     * @return 删除结果
+     */
+    @Override
+    public int physicalDelete(BizProductDrawingConversion bizProductDrawingConversion){ return bizProductDrawingConversionMapper.physicalDelete(bizProductDrawingConversion); };
+
+}

+ 9 - 0
src/main/java/cn/ezhizao/project/business/product/controller/BizProductController.java

@@ -88,6 +88,15 @@ public class BizProductController extends BaseController {
         util.exportExcel(response, list, "产品管理数据");
     }
 
+
+    @GetMapping("/getTotal")
+    public AjaxResult getTotal()
+    {
+        BizProduct item = new BizProduct();
+        List<BizProduct> list = bizProductService.query().eq("deleted",0).list();
+        int size = list.size();
+        return success(size);
+    }
     @GetMapping(value = "/getById/{id}")
     public AjaxResult getById(@PathVariable("id") Long id) {
         return success(bizProductService.getById(id));

+ 69 - 28
src/main/java/cn/ezhizao/project/business/technologicalProcessDetailDrawing/controller/BizTechnologicalProcessDetailDrawingController.java

@@ -142,6 +142,10 @@ public class BizTechnologicalProcessDetailDrawingController extends BaseControll
         return success(bizTechnologicalProcessDetailDrawingService.getById(id));
     }
 
+    @GetMapping(value="/getProcuctDrawing")
+    public AjaxResult getProcuctDrawing(){
+        return success(bizTechnologicalProcessDetailDrawingService.getProcuctDrawing());
+    }
 
     /**
      * 新增电子图纸会签
@@ -154,6 +158,12 @@ public class BizTechnologicalProcessDetailDrawingController extends BaseControll
         person.setUserId(SecurityUtils.getLoginUser().getUser().getUserId());
         String filePath = RuoYiConfig.getProfile();
         List<BizPersonalSeal> personList = bizPersonalSealService.getList(person);
+        // 获取当前日期
+        LocalDate currentDate = LocalDate.now();
+        // 定义日期格式
+        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy/MM/dd");
+        // 格式化日期
+        String formattedDate = currentDate.format(formatter);
         if(personList.isEmpty()){
             return error("请先上传个人章");
         }
@@ -171,9 +181,10 @@ public class BizTechnologicalProcessDetailDrawingController extends BaseControll
                 //上传调整尺寸
 
 
-                PdfUtils.reSized(filePath + url,filePath +url.substring(0, url.length()-4) + "制作" + url.substring(url.length()-4),60,"height");
+                PdfUtils.reSized(filePath + url,filePath +url.substring(0, url.length()-4) + "制作" + url.substring(url.length()-4),100,"height");
                 addText(filePath +url.substring(0, url.length()-4) + "制作" + url.substring(url.length()-4),filePath+url.substring(0, url.length()-4) + "制作人" + url.substring(url.length()-4),"制定人:",550,75,12,270);
-                addImage(filePath+url.substring(0, url.length()-4) + "制作人" + url.substring(url.length()-4),filePath+url.substring(0, url.length()-4) + "制作完成" + url.substring(url.length()-4),filePath+personalSeal,530,30,45,15,270);
+                addText(filePath +url.substring(0, url.length()-4) + "制作人" + url.substring(url.length()-4),filePath+url.substring(0, url.length()-4) + "制作时间" + url.substring(url.length()-4),formattedDate,500,75,12,270);
+                addImage(filePath+url.substring(0, url.length()-4) + "制作时间" + url.substring(url.length()-4),filePath+url.substring(0, url.length()-4) + "制作完成" + url.substring(url.length()-4),filePath+personalSeal,515,40,30,30,270,1);
                 item.setUrl("/profile/"+url.substring(0, url.length()-4) + "制作完成" + url.substring(url.length()-4));
                 bizTechnologicalProcessDetailDrawingService.save(item);
                 break;
@@ -185,8 +196,8 @@ public class BizTechnologicalProcessDetailDrawingController extends BaseControll
                         item.setReviewer(SecurityUtils.getLoginUser().getUser().getNickName());
                         item.setStatus(1);
                         addText(filePath+ url,filePath +url.substring(0, url.length()-4) + "审核" + url.substring(url.length()-4),"审核人:",470,75,12,270);
-
-                        addImage(filePath +url.substring(0, url.length()-4) + "审核" + url.substring(url.length()-4),filePath +url.substring(0, url.length()-4) + "审核完成" + url.substring(url.length()-4),filePath+personalSeal,450,30,45,15,270);
+                        addText(filePath +url.substring(0, url.length()-4) + "审核" + url.substring(url.length()-4),filePath+url.substring(0, url.length()-4) + "审核时间" + url.substring(url.length()-4),formattedDate,420,75,12,270);
+                        addImage(filePath +url.substring(0, url.length()-4) + "审核时间" + url.substring(url.length()-4),filePath +url.substring(0, url.length()-4) + "审核完成" + url.substring(url.length()-4),filePath+personalSeal,435,40,30,30,270,1);
                         item.setUrl("/profile/"+url.substring(0, url.length()-4) + "审核完成" + url.substring(url.length()-4));
                         bizTechnologicalProcessDetailDrawingService.updateById(item);
                         break;
@@ -205,6 +216,7 @@ public class BizTechnologicalProcessDetailDrawingController extends BaseControll
      * 批准逻辑
      * @param item
      */
+    @Transactional
     public void issuer (BizTechnologicalProcessDetailDrawing item,String personalSeal) throws DocumentException, IOException {
         item.setIssuerId(SecurityUtils.getLoginUser().getUser().getUserId());
         item.setIssuer(SecurityUtils.getLoginUser().getUser().getNickName());
@@ -232,23 +244,27 @@ public class BizTechnologicalProcessDetailDrawingController extends BaseControll
             String urlItem = "";
             urlItem = byId.getUrl();
             urlItem = urlItem.substring("/profile".length());
-            byId.setStatus(1);
+            byId.setStatus(2);
             byId.setAbandoned(1);
             byId.setVoided(SecurityUtils.getLoginUser().getUser().getNickName());
             byId.setVoidedId(SecurityUtils.getLoginUser().getUser().getUserId());
+            byId.setPattern("作废产品");
+            addImage(filePath+ urlItem,filePath +urlItem.substring(0, urlItem.length()-4) + "zf" + urlItem.substring(urlItem.length()-4),filePath+rem,290,880,40,15,300,0.8F);
+            addText(filePath +urlItem.substring(0, urlItem.length()-4) + "zf" + urlItem.substring(urlItem.length()-4),filePath +urlItem.substring(0, urlItem.length()-4) + "zfr" + urlItem.substring(urlItem.length()-4),"作废申请人:",310,75,12,270);
+            addText(filePath +urlItem.substring(0, urlItem.length()-4) + "zfr" + urlItem.substring(urlItem.length()-4),filePath+urlItem.substring(0, urlItem.length()-4) + "zfdate" + urlItem.substring(urlItem.length()-4),formattedDate,500,75,12,270);
 
-            addImage(filePath+ urlItem,filePath +urlItem.substring(0, urlItem.length()-4) + "zf" + urlItem.substring(urlItem.length()-4),filePath+rem,275,810,40,15,300);
-            addText(filePath +urlItem.substring(0, urlItem.length()-4) + "zf" + urlItem.substring(urlItem.length()-4),filePath +urlItem.substring(0, urlItem.length()-4) + "zfr" + urlItem.substring(urlItem.length()-4),"作废人:",310,75,12,270);
-            addImage(filePath +urlItem.substring(0, urlItem.length()-4) + "zfr" + urlItem.substring(urlItem.length()-4),filePath +urlItem.substring(0, urlItem.length()-4) + "zfover" + urlItem.substring(urlItem.length()-4),filePath+personalSeal,290,30,45,15,270);
+            addImage(filePath +urlItem.substring(0, urlItem.length()-4) + "zfdate" + urlItem.substring(urlItem.length()-4),filePath +urlItem.substring(0, urlItem.length()-4) + "zfover" + urlItem.substring(urlItem.length()-4),filePath+personalSeal,275,40,30,30,270,1);
            byId.setUrl("/profile/" +urlItem.substring(0, urlItem.length()-4) + "zfover" + urlItem.substring(urlItem.length()-4));
             bizTechnologicalProcessDetailDrawingService.updateById(byId);
         }
         //判断盖章逻辑
         if (item.getAbandoned() ==1){
             //加盖废弃章,不需要盖其他章
-            addImage(filePath+ url,filePath +url.substring(0, url.length()-4) + "zf" + url.substring(url.length()-4),filePath+rem,290,820,40,15,300);
-            addText(filePath +url.substring(0, url.length()-4) + "zf" + url.substring(url.length()-4),filePath +url.substring(0, url.length()-4) + "zfr" + url.substring(url.length()-4),"作废人:",310,75,12,270);
-            addImage(filePath +url.substring(0, url.length()-4) + "zfr" + url.substring(url.length()-4),filePath +url.substring(0, url.length()-4) + "zfover" + url.substring(url.length()-4),filePath+personalSeal,290,30,45,15,270);
+            addImage(filePath+ url,filePath +url.substring(0, url.length()-4) + "zf" + url.substring(url.length()-4),filePath+rem,290,880,40,15,300,0.8F);
+            addText(filePath +url.substring(0, url.length()-4) + "zf" + url.substring(url.length()-4),filePath +url.substring(0, url.length()-4) + "zfr" + url.substring(url.length()-4),"作废批准人:",230,75,12,270);
+            addText(filePath +url.substring(0, url.length()-4) + "zfr" + url.substring(url.length()-4),filePath+url.substring(0, url.length()-4) + "zfdate" + url.substring(url.length()-4),formattedDate,180,75,12,270);
+
+            addImage(filePath +url.substring(0, url.length()-4) + "zfdate" + url.substring(url.length()-4),filePath +url.substring(0, url.length()-4) + "zfover" + url.substring(url.length()-4),filePath+personalSeal,195,40,30,30,270,1);
             item.setUrl("/profile/"+url.substring(0, url.length()-4) + "zfover" + url.substring(url.length()-4));
             bizTechnologicalProcessDetailDrawingService.updateById(item);
             return;
@@ -256,26 +272,29 @@ public class BizTechnologicalProcessDetailDrawingController extends BaseControll
         //盖批准和审核章还有批准日期
         addText(filePath+ url,filePath +url.substring(0, url.length()-4) + "pz" + url.substring(url.length()-4),"批准人:",390,75,12,270);
         //批准章
-        addImage(filePath +url.substring(0, url.length()-4) + "pz" + url.substring(url.length()-4),filePath +url.substring(0, url.length()-4) + "pzz" + url.substring(url.length()-4),filePath+isu,400,800,60,55,300);
+        addImage(filePath +url.substring(0, url.length()-4) + "pz" + url.substring(url.length()-4),filePath +url.substring(0, url.length()-4) + "pzz" + url.substring(url.length()-4),filePath+isu,400,860,60,55,300,0.8F);
         //批准章上的日期
-        addText(filePath +url.substring(0, url.length()-4) + "pzz" + url.substring(url.length()-4),filePath +url.substring(0, url.length()-4) + "pzdate" + url.substring(url.length()-4),formattedDate,427,853,8,300);
+        addText(filePath +url.substring(0, url.length()-4) + "pzz" + url.substring(url.length()-4),filePath +url.substring(0, url.length()-4) + "pzdate" + url.substring(url.length()-4),formattedDate,427,913,8,300);
         //个人章
-        addImage(filePath +url.substring(0, url.length()-4) + "pzdate" + url.substring(url.length()-4),filePath +url.substring(0, url.length()-4) + "pzr" + url.substring(url.length()-4),filePath+personalSeal,370,30,45,15,270);
+        addImage(filePath +url.substring(0, url.length()-4) + "pzdate" + url.substring(url.length()-4),filePath +url.substring(0, url.length()-4) + "pzr" + url.substring(url.length()-4),filePath+personalSeal,355,40,30,30,270,1);
+        //批准日期
+        addText(filePath +url.substring(0, url.length()-4) + "pzr" + url.substring(url.length()-4),filePath +url.substring(0, url.length()-4) + "pzrdate" + url.substring(url.length()-4),formattedDate,340,75,12,270);
+
         //受控章
-        addImage(filePath +url.substring(0, url.length()-4) + "pzr" + url.substring(url.length()-4),filePath +url.substring(0, url.length()-4) + "pzover" + url.substring(url.length()-4),filePath+reviewer,465,810,45,28,300);
+        addImage(filePath +url.substring(0, url.length()-4) + "pzrdate" + url.substring(url.length()-4),filePath +url.substring(0, url.length()-4) + "pzover" + url.substring(url.length()-4),filePath+reviewer,465,870,45,28,300,0.8F);
         item.setUrl("/profile/" +url.substring(0, url.length()-4) + "pzover" + url.substring(url.length()-4));
         if (item.getIdentification()){
             //盖重章
-            addImage(filePath +url.substring(0, url.length()-4) + "pzover" + url.substring(url.length()-4),filePath +url.substring(0, url.length()-4) + "z" + url.substring(url.length()-4),filePath+heavy,320,810,40,40,300);
+            addImage(filePath +url.substring(0, url.length()-4) + "pzover" + url.substring(url.length()-4),filePath +url.substring(0, url.length()-4) + "z" + url.substring(url.length()-4),filePath+heavy,320,870,40,40,300,0.8F);
             item.setUrl("/profile" +url.substring(0, url.length()-4) + "z" + url.substring(url.length()-4));
         }
         if (item.getMarkD() ){
             //因为地址不同判断重章有没有盖到
             //盖D章
             if (!item.getIdentification()){
-                addImage(filePath +url.substring(0, url.length()-4) + "pzover" + url.substring(url.length()-4),filePath +url.substring(0, url.length()-4) + "dover" + url.substring(url.length()-4),filePath+D,365,810,40,40,300);
+                addImage(filePath +url.substring(0, url.length()-4) + "pzover" + url.substring(url.length()-4),filePath +url.substring(0, url.length()-4) + "dover" + url.substring(url.length()-4),filePath+D,365,870,40,40,300,0.8F);
             }else {
-                addImage(filePath +url.substring(0, url.length()-4) + "z" + url.substring(url.length()-4),filePath +url.substring(0, url.length()-4) + "dover" + url.substring(url.length()-4),filePath+D,365,810,40,40,300);
+                addImage(filePath +url.substring(0, url.length()-4) + "z" + url.substring(url.length()-4),filePath +url.substring(0, url.length()-4) + "dover" + url.substring(url.length()-4),filePath+D,365,870,40,40,300,0.8F);
             }
             item.setUrl("/profile/" +url.substring(0, url.length()-4) + "dover" + url.substring(url.length()-4));
 
@@ -317,11 +336,28 @@ public String getPublicSeal(String code) {
         if(personList.isEmpty()){
             return error("请先上传个人章");
         }
+        String personalSeal = personList.get(0).getUrl().substring("/profile".length());
+        LocalDate currentDate = LocalDate.now();
+        // 定义日期格式
+        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy/MM/dd");
+        // 格式化日期
+        String formattedDate = currentDate.format(formatter);
         for(BizTechnologicalProcessDetailDrawing  item: processDetailDrawing){
+            String url = "";
+            url = item.getUrl();
+            url = url.substring("/profile".length());
+            String filePath = RuoYiConfig.getProfile();
             item.setStatus(1);
             item.setAbandoned(1);
+            item.setPattern("作废产品");
             item.setVoided(SecurityUtils.getLoginUser().getUser().getNickName());
             item.setVoidedId(SecurityUtils.getLoginUser().getUser().getUserId());
+
+            addText(filePath +url.substring(0, url.length()-4) + url.substring(url.length()-4),filePath +url.substring(0, url.length()-4) + "zfr" + url.substring(url.length()-4),"作废申请人:",310,75,12,270);
+            addText(filePath +url.substring(0, url.length()-4) + "zfr" + url.substring(url.length()-4),filePath+url.substring(0, url.length()-4) + "zfdate" + url.substring(url.length()-4),formattedDate,260,75,12,270);
+
+            addImage(filePath +url.substring(0, url.length()-4) + "zfdate" + url.substring(url.length()-4),filePath +url.substring(0, url.length()-4) + "zfover" + url.substring(url.length()-4),filePath+personalSeal,275,40,30,30,270,1);
+            item.setUrl("/profile/"+url.substring(0, url.length()-4) + "zfover" + url.substring(url.length()-4));
             bizTechnologicalProcessDetailDrawingService.updateById(item);
         }
 
@@ -362,11 +398,12 @@ public String getPublicSeal(String code) {
     public AjaxResult replaceDrawing(@RequestBody BizTechnologicalProcessDetailDrawing processDetailDrawing) throws NoSuchFieldException, IllegalAccessException, COSVisitorException, DocumentException, IOException {
         //根据parentId插叙旧图纸
         BizTechnologicalProcessDetailDrawing id = bizTechnologicalProcessDetailDrawingService.query().eq("id", processDetailDrawing.getParentId()).one();
-        id.setStatus(1);
-        id.setAbandoned(1);
-        id.setVoided(SecurityUtils.getLoginUser().getUser().getNickName());
-        id.setVoidedId(SecurityUtils.getLoginUser().getUser().getUserId());
-        bizTechnologicalProcessDetailDrawingService.updateById(id);
+//        id.setStatus(1);
+//        id.setAbandoned(1);
+//        id.setPattern("作废产品");
+//        id.setVoided(SecurityUtils.getLoginUser().getUser().getNickName());
+//        id.setVoidedId(SecurityUtils.getLoginUser().getUser().getUserId());
+//        bizTechnologicalProcessDetailDrawingService.updateById(id);
 
 
 
@@ -383,14 +420,18 @@ public String getPublicSeal(String code) {
         String url = "";
         url = processDetailDrawing.getUrl();
         url = url.substring("/profile".length());
-        processDetailDrawing.setPattern("替换");
+
+//        processDetailDrawing.setMarkD(id.getMarkD());
+//        processDetailDrawing.setIdentification(id.getIdentification());
+        processDetailDrawing.setDrawingName(id.getDrawingName());
+        processDetailDrawing.setPattern("替换产品");
         processDetailDrawing.setProducerId(SecurityUtils.getLoginUser().getUser().getUserId());
         processDetailDrawing.setProducer(SecurityUtils.getLoginUser().getUser().getNickName());
         processDetailDrawing.setTechnologicalProcessDetailId(id.getTechnologicalProcessDetailId());
         processDetailDrawing.setTechnologicalProcessId(id.getTechnologicalProcessId());
-        PdfUtils.reSized(filePath + url,filePath +url.substring(0, url.length()-4) + "制作" + url.substring(url.length()-4),60,"height");
+        PdfUtils.reSized(filePath + url,filePath +url.substring(0, url.length()-4) + "制作" + url.substring(url.length()-4),100,"height");
         addText(filePath +url.substring(0, url.length()-4) + "制作" + url.substring(url.length()-4),filePath+url.substring(0, url.length()-4) + "制作人" + url.substring(url.length()-4),"制定人:",550,75,12,270);
-        addImage(filePath+url.substring(0, url.length()-4) + "制作人" + url.substring(url.length()-4),filePath+url.substring(0, url.length()-4) + "制作完成" + url.substring(url.length()-4),filePath+personalSeal,530,30,45,15,270);
+        addImage(filePath+url.substring(0, url.length()-4) + "制作人" + url.substring(url.length()-4),filePath+url.substring(0, url.length()-4) + "制作完成" + url.substring(url.length()-4),filePath+personalSeal,530,30,45,15,270,1);
         processDetailDrawing.setUrl("/profile/"+url.substring(0, url.length()-4) + "制作完成" + url.substring(url.length()-4));
 
         return toAjax(bizTechnologicalProcessDetailDrawingService.save(processDetailDrawing));
@@ -584,8 +625,8 @@ public String getPublicSeal(String code) {
      * @throws DocumentException
      * @throws IOException
      */
-    public void addImage(String srcPath,String resultPath,String imgPath,Integer x,Integer y,Integer width,Integer height,Integer rotation) throws DocumentException, IOException {
-        ByteArrayOutputStream bos = PdfUtils.addImage(srcPath, imgPath, x, y, width, height,rotation);
+    public void addImage(String srcPath,String resultPath,String imgPath,Integer x,Integer y,Integer width,Integer height,Integer rotation,float opacity) throws DocumentException, IOException {
+        ByteArrayOutputStream bos = PdfUtils.addImage(srcPath, imgPath, x, y, width, height,rotation, opacity);
         FileOutputStream out = new FileOutputStream(resultPath);
         out.write(bos.toByteArray());
         out.close();

+ 6 - 0
src/main/java/cn/ezhizao/project/business/technologicalProcessDetailDrawing/mapper/BizTechnologicalProcessDetailDrawingMapper.java

@@ -36,4 +36,10 @@ public interface BizTechnologicalProcessDetailDrawingMapper extends BaseMapper<B
      * @return 删除结果
     */
     public int physicalDelete(BizTechnologicalProcessDetailDrawing bizTechnologicalProcessDetailDrawing);
+
+
+    /**
+     * 查询产品在工序的电子图纸
+     */
+    public Integer getProcuctDrawing();
 }

+ 5 - 0
src/main/java/cn/ezhizao/project/business/technologicalProcessDetailDrawing/service/IBizTechnologicalProcessDetailDrawingService.java

@@ -37,4 +37,9 @@ public interface IBizTechnologicalProcessDetailDrawingService extends IService<B
      */
     public List<BizTechnologicalProcessDetailDrawing> getDrawingList(BizTechnologicalProcessDetailDrawing bizTechnologicalProcessDetailDrawing);
 
+    /**
+     * 查询产品在工序的电子图纸
+     */
+    public Integer getProcuctDrawing();
+
 }

+ 5 - 0
src/main/java/cn/ezhizao/project/business/technologicalProcessDetailDrawing/service/impl/BizTechnologicalProcessDetailDrawingServiceImpl.java

@@ -48,6 +48,11 @@ public class BizTechnologicalProcessDetailDrawingServiceImpl extends ServiceImpl
         return bizTechnologicalProcessDetailDrawingMapper.getDrawingList(bizTechnologicalProcessDetailDrawing);
     }
 
+    @Override
+    public Integer getProcuctDrawing() {
+        return bizTechnologicalProcessDetailDrawingMapper.getProcuctDrawing();
+    }
+
     ;
 
 }

+ 33 - 0
src/main/resources/mybatis/business/conversion/BizProductDrawingConversionMapper.xml

@@ -0,0 +1,33 @@
+<?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="cn.ezhizao.project.business.conversion.mapper.BizProductDrawingConversionMapper">
+
+    <resultMap type="cn.ezhizao.project.business.conversion.domain.BizProductDrawingConversion" id="BizProductDrawingConversionResult">
+        <id column="id" property="id"/>
+    </resultMap>
+
+
+    <select id="getList" parameterType="BizProductDrawingConversion" resultMap="BizProductDrawingConversionResult">
+        SELECT * FROM biz_product_drawing_conversion
+        <trim prefix=" WHERE" suffix="" suffixOverrides="AND">
+            deleted = 0
+            <if test="startTime != null">AND date >= #{startTime}</if>
+            <if test="endTime != null">AND date &lt; #{endTime}</if>
+            <if test="date != null "> AND date = #{date}</if>
+            <if test="number != null "> AND number = #{number}</if>
+        </trim>
+        order by date desc
+    </select>
+
+    <delete id="physicalDelete">
+        DELETE FROM biz_product_drawing_conversion
+        <trim prefix=" WHERE" suffix="" suffixOverrides="AND">
+            <if test="id != null">
+                id = #{id} AND
+            </if>
+       <!-- 删除条件为其他外键可以在这里加 -->
+        </trim>
+    </delete>
+</mapper>

+ 9 - 1
src/main/resources/mybatis/business/technologicalProcessDetailDrawing/BizTechnologicalProcessDetailDrawingMapper.xml

@@ -17,7 +17,13 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     <select id="getProcessAlias" resultType="java.lang.String">
         select process_alias from biz_technological_process_detail where deleted = 0 and id = #{technologicalProcessDetailId}
     </select>
-
+    <select id="getProcuctDrawing" resultType="integer">
+        select count(1) from biz_product where deleted = 0 and type = 9 and production_type_code = 'N' and id in(
+            select product_id from biz_technological_process_detail where deleted = 0 and id in (
+                select technological_process_detail_id from biz_technological_process_detail_drawing where deleted = 0
+            )
+        )
+    </select>
     <select id="getVersion" resultType="java.lang.String">
         select technology_version from biz_technological_process_detail where deleted = 0 and id = #{technologicalProcessDetailId}
     </select>
@@ -38,10 +44,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         order by create_time desc
     </select>
 
+
     <select id="getDrawingList" parameterType="BizTechnologicalProcessDetailDrawing" resultMap="BizTechnologicalProcessDetailDrawingResult">
         SELECT * FROM biz_technological_process_detail_drawing
         <trim prefix=" WHERE" suffix="" suffixOverrides="AND">
             deleted = 0
+            <if test="abandoned != null  and abandoned != ''"> AND abandoned = #{abandoned}</if>
             <if test="url != null  and url != ''"> AND url = #{url}</if>
             <if test="status != null ">AND status = #{status}</if>
             <if test="technologicalProcessDetailId != null  and technologicalProcessDetailId != ''"> AND technological_process_detail_id = #{technologicalProcessDetailId}</if>