yangys
2025-09-06 61763cc1a182effa7e5535ac72d54a6a56f029eb
blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/ProgramConfirmTableService.java
@@ -2,35 +2,26 @@
package org.springblade.mdm.flow.service;
import com.itextpdf.text.*;
import com.itextpdf.text.pdf.*;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.flowable.engine.HistoryService;
import org.flowable.task.api.history.HistoricTaskInstance;
import org.springblade.core.oss.OssTemplate;
import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.DateUtil;
import org.springblade.mdm.basesetting.machine.MachineService;
import org.springblade.mdm.basesetting.machine.service.MachineService;
import org.springblade.mdm.basesetting.machine.entity.Machine;
import org.springblade.mdm.basesetting.producedivision.entity.QinzheFgb;
import org.springblade.mdm.basesetting.producedivision.service.QinzheFgbService;
import org.springblade.mdm.commons.contants.DictBizConstants;
import org.springblade.mdm.commons.service.ParamService;
import org.springblade.mdm.flow.constants.FlowContants;
import org.springblade.mdm.commons.support.TemplatedPdfWriter;
import org.springblade.mdm.flow.vo.ApproveTableInfo;
import org.springblade.mdm.program.entity.NcNode;
import org.springblade.mdm.program.entity.NcProgramApproved;
import org.springblade.mdm.program.service.NcNodeService;
import org.springblade.mdm.program.service.NcProgramApprovedService;
import org.springblade.system.feign.IDictBizClient;
import org.springblade.system.feign.IUserClient;
import org.springblade.system.pojo.entity.DictBiz;
import org.springblade.system.pojo.entity.User;
import org.springblade.system.pojo.entity.UserInfo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.io.*;
import java.util.*;
import java.util.List;
/**
 * 数控程序确认表输出服务
@@ -41,7 +32,7 @@
@Service
public class ProgramConfirmTableService {
   @Autowired
   private FlowCommonService flowCommonService;
   private QinzheFgbService qinzheFgbService;
   @Autowired
   private IDictBizClient dictBizClient;
   @Autowired
@@ -54,13 +45,16 @@
   private IUserClient userClient;
   @Autowired
   private ParamService paramService;
   @Autowired
   private ApproveInfoQueryService approveInfoQueryService;
   public void exportConfirmTable(FlowProgramProperties props, OutputStream os) throws IOException, DocumentException {
      byte[] tplBytes = getTemplateBytes();
      generateTempPDF(tplBytes,props,os);
      //byte[] tplBytes = getTemplateBytes();
      TemplatedPdfWriter pdfWriter = new TemplatedPdfWriter(getTemplateBytes());
      //generateTempPDF(tplBytes,props,os);
      pdfWriter.write(getPdfData(props),os);
   }
   /*
   void generateTempPDF(byte[] bytes,FlowProgramProperties props,OutputStream outputStream) throws DocumentException, IOException {
      PdfReader reader = null;
      PdfStamper pdfStamper = null;
@@ -91,7 +85,7 @@
         //fields.setFieldRichValue()
      }
   }
   }*/
@@ -111,7 +105,7 @@
    * @param props 流程属性
    * @return 数据map
    */
   Map<String,String> getData(FlowProgramProperties props){
   Map<String,String> getPdfData(FlowProgramProperties props){
      Map<String,String> data = new HashMap<>();
      data.put("pageTotal","1");
      data.put("pageNo","1");
@@ -124,8 +118,12 @@
      data.put("productModel",props.getProductModel());
      data.put("craftEdition",props.getCraftEdition());
      data.put("fuheY","Y");
      data.put("keyongY","Y");
      //零组件名称
      data.put("drawingName",getDrawingName(props.getDrawingNo()));
      data.put("deviation",props.getDeviation()!=null?props.getDeviation():StringUtils.EMPTY);
      Machine machine = this.machineService.getByCode(props.getMachineCode());
      data.put("machineMode",machine.getName());
      R<String> dictSystemResult = dictBizClient.getValue(DictBizConstants.CONTROL_SYSTEM,machine.getControlSystem());
@@ -133,29 +131,55 @@
         data.put("controlSystem",dictSystemResult.getData());
      }
      data.put("operator","不明确/2025-1-1");
      data.put("jjy","不明确/2025-1-1");
      data.put("operator","来源MES/2025-1-1");
      data.put("jjy","来源MES/2025-1-1");
      data.put("fuheY","Y");//TODO 有 检验员 则符合
      data.put("keyongY","Y");//TODO 有 检验员 则符合
      data.put("programmerName",getNameByUserId(props.getProgrammerId()));
      data.put("checkerName",getNameByUserId(props.getCheckerId()));
      data.put("seniorName",getNameByUserId(props.getSeniorId()));
      data.put("jly","来源MES/2025-1-1");
      data.put("jln","来源MES/2025-1-1");
      ApproveTableInfo approveInfo = approveInfoQueryService.getApproveInfo(props);
      data.put("programmerName",approveInfo.getProgrammerName());
      data.put("checkerName",approveInfo.getCheckerName());
      data.put("seniorName",approveInfo.getSeniorName());
      data.put("programNo",approveInfo.getProgramNo());
      return data;
   }
   String getNameByUserId(Long userId){
      if(userId == null){
   /**
    * 查询程序编号
    * @param nodeId
    * @return
    */
   /*
   private String queryProgramNo(Long nodeId) {
      if(nodeId ==null) {
         return StringUtils.EMPTY;
      }
      NcNode programPkdNode = this.ncNodeService.getById(nodeId);
      if (programPkdNode != null) {
         return programPkdNode.getProgramNo();
      }else{
         return StringUtils.EMPTY;
      }
      String name = StringUtils.EMPTY;
      R<User> useInfoResult =  userClient.userInfoById(userId);
      if(useInfoResult.isSuccess()){
         name = useInfoResult.getData().getName();
   }
   */
   /**
    * 获取零组件名称
    * @param drawingNo 零件编号
    * @return 零组件名称
    */
   String getDrawingName(String drawingNo){
      QinzheFgb fgb = qinzheFgbService.getByLjh(drawingNo);
      if(fgb!= null){
         return fgb.getLjmc();
      }else{
         return StringUtils.EMPTY;
      }
      return name;
   }
}