yangys
2025-08-17 0ef4cc755bddd87799b8bfdd65c8123df6e149d0
blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/ApproveTableService.java
@@ -14,8 +14,10 @@
import org.springblade.mdm.flow.entity.ApproveRecord;
import org.springblade.mdm.flow.mapper.ApproveRecordMapper;
import org.springblade.mdm.flow.vo.ApproveRecordVO;
import org.springblade.mdm.program.entity.NcNode;
import org.springblade.mdm.program.entity.NcProgram;
import org.springblade.mdm.program.entity.ProcessProgRef;
import org.springblade.mdm.program.service.NcNodeService;
import org.springblade.mdm.program.service.NcProgramService;
import org.springblade.mdm.program.service.ProcessProgRefService;
import org.springframework.beans.BeanUtils;
@@ -23,6 +25,7 @@
import java.io.IOException;
import java.io.OutputStream;
import java.util.Date;
import java.util.List;
import com.itextpdf.text.*;
import com.itextpdf.text.pdf.*;
@@ -35,16 +38,15 @@
@Service
@AllArgsConstructor
public class ApproveTableService{
   private final ProcessProgRefService processProgRefService;
   private final FlowCommonService flowCommonService;
   private final ApproveRecordService approveRecordService;
   private final NcProgramService ncProgramService;
   private final NcNodeService ncNodeService;
   private final MachineService machineService;
   private static final String UNCHECK_BOX = "☐";
   private static final String CHECKED_BOX = "☑";
   static Chunk square = new Chunk("o", new Font(Font.FontFamily.ZAPFDINGBATS, 12)); // 空方框
   static Chunk check = new Chunk("4", new Font(Font.FontFamily.ZAPFDINGBATS, 12)); // 带勾方框
   //static SimpleDateFormat
   BaseFont getBaseFont() throws DocumentException, IOException {
      return BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);
   }
@@ -68,6 +70,9 @@
      List<ApproveRecord> records = approveRecordService.lambdaQuery().eq(ApproveRecord::getProcessInstanceId, processInstanceId).orderByAsc(ApproveRecord::getCreateTime).list();
      for(int i=0;i<records.size();i++){
         ApproveRecord record = records.get(i);
         if(record.getNcNodeId() ==null){
            continue;
         }
         printStep(document,bfChinese,record);
         if(i<records.size()-1){
            document.newPage();
@@ -78,13 +83,13 @@
   }
   void printStep(Document document,BaseFont bfChinese,ApproveRecord record) throws DocumentException, IOException {
      NcProgram ncProgram;
      NcNode programPackageNode;
      Machine machine;
      if(record.getNcProgramId() !=null ) {
         ncProgram = ncProgramService.getById(record.getNcProgramId());
         machine = machineService.getByCode(ncProgram.getMachineCode());
      if(record.getNcNodeId() !=null ) {
         programPackageNode = ncNodeService.getById(record.getNcNodeId());
         machine = machineService.getByCode(programPackageNode.getMachineCode());
      }else{
         ncProgram = new NcProgram();
         programPackageNode = new NcNode();
         machine = new Machine();
      }
@@ -119,10 +124,10 @@
      //PdfPCell cell12 = new PdfPCell();
      //cell12.setColspan(2);
      //cell12.addElement(new Phrase(ncProgram.getDrawingNo()));
      table.addCell(getCell(ncProgram.getDrawingNo(),ft));//零组件号
      table.addCell(getCell(programPackageNode.getDrawingNo(),ft));//零组件号
      table.addCell(getCell(ncProgram.getProcessNo(),ft));//工序号
      table.addCell(getCell(ncProgram.getCraftEdition(),ft));//工艺版次
      table.addCell(getCell(programPackageNode.getProcessNo(),ft));//工序号
      table.addCell(getCell(programPackageNode.getCraftEdition(),ft));//工艺版次
      table.addCell(getCell(machine.getName(),ft));//机床型号
      table.addCell("");//负责人,工段负责人派出时间
@@ -155,10 +160,14 @@
      String personName = record.getUserNickname();
      Chunk block1 = square;
      Chunk block2 = square;
      if(StringUtils.equals(record.getTaskDefinitionId(),"programmingTask")){
      Date programDate = null;
      Date checkDate = null;
      if(StringUtils.equals(record.getTaskDefinitionKey(),"programmingTask")){
         block1 = check;
      }else if(StringUtils.equals(record.getTaskDefinitionId(),"check")){
         programDate = record.getCreateTime();
      }else if(StringUtils.equals(record.getTaskDefinitionKey(),"check")){
         block2 = check;
         checkDate = record.getCreateTime();
      }
      Phrase p = new Phrase("       "+personName+"        ",underLineFt);
@@ -199,11 +208,21 @@
      table.addCell(getCell("批准/日期",ft));
      PdfPCell cell2 = new PdfPCell();
      cell2.addElement(new Phrase(" ",ft));
      cell2.setColspan(2);
      cell2.addElement(new Phrase(programPackageNode.getProgramNo(),ft));//数控程序编号
      table.addCell(cell2);
      table.addCell(getCell(" ",ft));
      table.addCell(getCell(" ",ft));
      String pDateStr = " ";
      if(programDate!=null){
         pDateStr = DateUtil.format(programDate,"yyyy-MM-dd");
      }
      String checkDateStr = " ";
      if(checkDate!=null){
         checkDateStr = DateUtil.format(programDate,"yyyy-MM-dd");
      }
      table.addCell(getCell(pDateStr,ft));//编制日期
      table.addCell(getCell(checkDateStr,ft));
      table.addCell(getCell(" ",ft));
      // 设置表格宽度占页面宽度的100%