浏览代码

物资-领用单下载功能

huangguoce 3 周之前
父节点
当前提交
c136c13281

+ 18 - 2
jeeplus-modules/jeeplus-flowable/src/main/java/com/jeeplus/flowable/service/FlowTaskService.java

@@ -193,6 +193,17 @@ public class FlowTaskService {
                             }
                         }
                         break;
+                //景聚庭查询领用记录
+                    case "老板审核":
+                        TaskComment comment = flow.getComment();
+                        if(StringUtils.isNotBlank(comment.getStatus()) && comment.getLevel().equals("success")){
+                            data.put("status",comment.getStatus());
+                            if(StringUtils.isNotBlank(flow.getAssigneeName())){
+                                data.put("firstAuditName",flow.getAssigneeName());
+                                data.put("auditTime",histIns.getEndTime());
+                            }
+                        }
+                        break;
                 }
             }
         }
@@ -428,6 +439,7 @@ public class FlowTaskService {
 
     // 判断流程名称是否满足条件
     private boolean isRequiredProcess(String processName) {
+
         return processName.equals("物资管理-领用申请") ||
                 processName.equals("物资管理-采购申请") ||
                 processName.equals("日常办公-请假申请") ||
@@ -438,7 +450,11 @@ public class FlowTaskService {
                 processName.equals("会计-发票申请") ||
                 processName.equals("报销申请") ||
                 processName.equals("会议室预约") ||
-                processName.equals("发票申请")  ;
+                processName.equals("发票申请")  ||
+                processName.equals("进销存-采购申请")||
+                processName.equals("进销存-入库修改")||
+                processName.equals("进销存-报损申请")||
+                processName.equals("进销存-领用申请");
     }
 
     /**
@@ -683,7 +699,7 @@ public class FlowTaskService {
         if (StringUtils.isNotBlank(type)) {
             if (type.equals("ydd")) {
                 // 创建一个包含需要保留的流程定义名称的集合
-                List<String> requiredNames = Arrays.asList("物资管理-领用申请", "物资管理-采购申请", "日常办公-请假申请", "离职申请", "离职交接申请", "会计-报销审批", "会计-报销审批-电子发票", "会计-发票申请", "报销申请","发票申请","会议室预约");
+                List<String> requiredNames = Arrays.asList("物资管理-领用申请", "物资管理-采购申请", "日常办公-请假申请", "离职申请", "离职交接申请", "会计-报销审批", "会计-报销审批-电子发票", "会计-发票申请", "报销申请","发票申请","会议室预约","进销存-领用申请");
                 /**
                  * 移动端工作台数据处理
                  */

+ 94 - 8
jeeplus-modules/jeeplus-psi-management/src/main/java/com/jeeplus/psimanage/collect/controller/PsiCollectController.java

@@ -1,31 +1,43 @@
 package com.jeeplus.psimanage.collect.controller;
 
+import cn.hutool.extra.spring.SpringUtil;
+import com.alibaba.excel.EasyExcel;
+import com.alibaba.excel.ExcelWriter;
+import com.alibaba.excel.write.metadata.WriteSheet;
+import com.alibaba.excel.write.metadata.fill.FillConfig;
+import com.alibaba.excel.write.metadata.fill.FillWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.jeeplus.common.TokenProvider;
 import com.jeeplus.common.excel.EasyExcelUtils;
 import com.jeeplus.common.excel.ExcelOptions;
 import com.jeeplus.common.excel.annotation.ExportMode;
 import com.jeeplus.common.utils.ResponseUtil;
+import com.jeeplus.flowable.feign.IFlowableApi;
 import com.jeeplus.logging.annotation.ApiLog;
 import com.jeeplus.logging.constant.enums.LogTypeEnum;
 import com.jeeplus.psimanage.collect.domain.PsiCollectBasicsReturnHi;
+import com.jeeplus.psimanage.collect.domain.PsiCollectDetailedRecord;
 import com.jeeplus.psimanage.collect.mapper.PsiCollectDetailedRecordMapper;
 import com.jeeplus.psimanage.collect.service.PsiCollectService;
-import com.jeeplus.psimanage.collect.service.dto.PsiCollectDto;
-import com.jeeplus.psimanage.collect.service.dto.PsiCollectExportDto;
-import com.jeeplus.psimanage.collect.service.dto.PsiWareHouseSummaryDto;
-import com.jeeplus.psimanage.collect.service.dto.TreeUserDto;
+import com.jeeplus.psimanage.collect.service.dto.*;
+import com.jeeplus.sys.feign.IUserApi;
+import com.jeeplus.sys.service.dto.UserDTO;
 import com.jeeplus.utils.StringUtils;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
+import org.flowable.bpmn.model.FlowNode;
+import org.springframework.core.io.ClassPathResource;
 import org.springframework.http.ResponseEntity;
 import org.springframework.web.bind.annotation.*;
 
 import javax.annotation.Resource;
 import javax.servlet.http.HttpServletResponse;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.io.FileNotFoundException;
+import java.io.InputStream;
+import java.net.URLEncoder;
+import java.text.SimpleDateFormat;
+import java.util.*;
 import java.util.stream.Collectors;
 
 /**
@@ -37,6 +49,8 @@ import java.util.stream.Collectors;
 @RequestMapping(value = "/psi/collect")
 public class PsiCollectController {
 
+    private static final String COLLECT_EXPORT_TEMPLATE = "dot/领用申请单.xlsx";
+
     @Resource
     private PsiCollectService psiCollectService;
 
@@ -106,7 +120,7 @@ public class PsiCollectController {
     @ApiOperation(value = "导出领用数据")
     @GetMapping("/exportFile")
     public void exportFile(Page<PsiCollectDto> page, PsiCollectDto dto, ExcelOptions options, HttpServletResponse response) throws Exception{
-        String fileName = options.getFilename();
+        String fileName = StringUtils.isBlank(options.getFilename()) ? "领用申请单" : options.getFilename();
         String sheetName = options.getSheetName();
         List<PsiCollectExportDto> result;
         if (ExportMode.current.equals(options.getMode())) {
@@ -123,6 +137,78 @@ public class PsiCollectController {
         EasyExcelUtils.newInstance().exportExcel(result, sheetName, PsiCollectExportDto.class, fileName, null, response);
     }
 
+    @ApiLog(value = "导出单条领用数据单", type = LogTypeEnum.EXPORT)
+    @ApiOperation(value = "导出单条领用数据单")
+    @GetMapping("/exportFileByTemplate")
+    public void exportFileByTemplate(PsiCollectDto dto, ExcelOptions options, HttpServletResponse response) throws Exception{
+        String fileName = options.getFilename();
+        //获取领用数据
+        PsiCollectDto byId = psiCollectService.exportFileByTemplate(dto);
+        List<PsiCollectExportTemplateDto> result = new ArrayList<>();
+        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
+        List<PsiCollectDetailedRecord> recordList = byId.getRecordList();
+        recordList.forEach(record -> {
+            PsiCollectExportTemplateDto exportDto = new PsiCollectExportTemplateDto();
+            exportDto.setId(byId.getId());
+            exportDto.setCollectNo(byId.getCollectNo());
+            exportDto.setRecipientAgent(record.getRecipientAgent());
+            exportDto.setRecipientOffice(record.getRecipientOffice());
+            exportDto.setCollectType(record.getCollectType());
+            exportDto.setGoodsName(record.getGoodsName());
+            exportDto.setCollectNumber(psiCollectService.formatExportNumber(record.getCollectNumber()));
+            exportDto.setCompany(record.getCompany());
+            exportDto.setDetailRemarks(record.getRemarks());
+            exportDto.setCollectDate(byId.getCollectDate() == null ? "" : dateFormat.format(byId.getCollectDate()));
+            result.add(exportDto);
+        });
+        //获取流程审核信息
+        Map map = SpringUtil.getBean(IFlowableApi.class).historicTaskList2(byId.getProcInsId());
+        Map<String, Object> data = new HashMap<>();
+        //领用单基本信息
+        data.put("collectDate", byId.getCollectDate() == null ? "" : dateFormat.format(byId.getCollectDate()));
+        data.put("collectNo", byId.getCollectNo());
+        data.put("handledByName", StringUtils.isNotBlank(byId.getHandledByName()) ? byId.getHandledByName() : byId.getHandledBy());
+        data.put("handledByOfficeName", byId.getHandledByOfficeName());
+        data.put("remarks", byId.getRemarks());
+        //审批信息
+        if(map != null){
+            String status = String.valueOf(map.get("status"));
+            String firstAuditName = String.valueOf(map.get("firstAuditName"));
+            String auditTime = String.valueOf(map.get("auditTime"));
+            if(status.equals("同意")){
+                data.put("status","已同意");
+            }else{
+                data.put("status","");
+            }
+            data.put("auditUser",firstAuditName);
+            data.put("auditTime",auditTime);
+        }
+        response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
+        response.setCharacterEncoding("utf-8");
+        fileName = URLEncoder.encode(fileName, "UTF-8").replaceAll("\\+", "%20");
+        response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx");
+
+        ClassPathResource templateResource = new ClassPathResource(COLLECT_EXPORT_TEMPLATE);
+        if (!templateResource.exists()) {
+            throw new FileNotFoundException("Excel模板不存在:" + COLLECT_EXPORT_TEMPLATE);
+        }
+
+        try (InputStream templateInputStream = templateResource.getInputStream()) {
+            ExcelWriter excelWriter = EasyExcel.write(response.getOutputStream())
+                    .withTemplate(templateInputStream)
+                    .build();
+            try {
+                WriteSheet writeSheet = EasyExcel.writerSheet().build();
+                FillConfig fillConfig = FillConfig.builder().forceNewRow(Boolean.TRUE).build();
+                excelWriter.fill(data, writeSheet);
+                //列表信息
+                excelWriter.fill(new FillWrapper("collectList", result), fillConfig, writeSheet);
+            } finally {
+                excelWriter.finish();
+            }
+        }
+    }
+
     /**
      * 商品入库信息列表查询
      * @param dto

+ 1 - 1
jeeplus-modules/jeeplus-psi-management/src/main/java/com/jeeplus/psimanage/collect/mapper/xml/PsiCollectDetailedMapper.xml

@@ -84,7 +84,7 @@
             a.returned_num,
             pmwd.warn_num,
             pmwd.warn_flag,
-            a.remarks as detailRemarks
+            a.remarks
         from psi_management_collect_detailed_record a
             LEFT JOIN sys_user su  ON a.recipient_agent = su.id
             LEFT JOIN sys_office so ON su.office_id = so.id

+ 17 - 6
jeeplus-modules/jeeplus-psi-management/src/main/java/com/jeeplus/psimanage/collect/service/PsiCollectService.java

@@ -17,10 +17,7 @@ import com.jeeplus.core.query.QueryWrapperGenerator;
 import com.jeeplus.flowable.feign.IFlowableApi;
 import com.jeeplus.psimanage.collect.domain.*;
 import com.jeeplus.psimanage.collect.mapper.*;
-import com.jeeplus.psimanage.collect.service.dto.PsiCollectDto;
-import com.jeeplus.psimanage.collect.service.dto.PsiCollectExportDto;
-import com.jeeplus.psimanage.collect.service.dto.PsiWareHouseSummaryDto;
-import com.jeeplus.psimanage.collect.service.dto.TreeUserDto;
+import com.jeeplus.psimanage.collect.service.dto.*;
 import com.jeeplus.psimanage.psiWareHouse.domain.PsiWareHouseDetailed;
 import com.jeeplus.psimanage.psiWareHouse.service.PsiWareHouseBasicService;
 import com.jeeplus.psimanage.purchase.service.PsiMaterialService;
@@ -876,7 +873,14 @@ public class PsiCollectService {
             queryWrapper.between("a.collect_date", contractDates[0], contractDates[1]);
         }
         if (StringUtils.isNotBlank(dto.getStatusReturn())) {
-            queryWrapper.eq("returna.status", dto.getStatusReturn());
+            if(dto.getStatusReturn().equals("0")){
+                queryWrapper.and(w -> w.eq("returna.status", "0")
+                        .or()
+                        .isNull("returna.status")
+                        .or()
+                        .eq("returna.status", ""));            }else{
+                queryWrapper.eq("returna.status", dto.getStatusReturn());
+            }
         }
         IPage<PsiCollectDto> list = basicMapper.findList(page, queryWrapper);
         list.getRecords().stream().forEach(item -> {
@@ -970,6 +974,13 @@ public class PsiCollectService {
         return result;
     }
 
+    public PsiCollectDto exportFileByTemplate(PsiCollectDto dto) throws Exception{
+        PsiCollectDto byId = this.findById(dto.getId());
+        List<PsiCollectDetailedRecord> recordList = psiDetailedMapper.getRecordsByBasicId(byId.getId(), "0");
+        byId.setRecordList(recordList);
+        return byId;
+    }
+
     private String formatExportInventoryNumber(String surplusNumber, String spec) {
         if (StringUtils.isBlank(surplusNumber)) {
             return "";
@@ -986,7 +997,7 @@ public class PsiCollectService {
         }
     }
 
-    private String formatExportNumber(String value) {
+    public String formatExportNumber(String value) {
         if (StringUtils.isBlank(value)) {
             return "";
         }

+ 54 - 0
jeeplus-modules/jeeplus-psi-management/src/main/java/com/jeeplus/psimanage/collect/service/dto/PsiCollectExportTemplateDto.java

@@ -0,0 +1,54 @@
+package com.jeeplus.psimanage.collect.service.dto;
+
+import com.alibaba.excel.annotation.ExcelIgnore;
+import com.alibaba.excel.annotation.ExcelProperty;
+import lombok.Data;
+
+@Data
+public class PsiCollectExportTemplateDto {
+
+    @ExcelIgnore
+    private String id;
+
+    @ExcelIgnore
+    private String handledByName;
+
+    @ExcelIgnore
+    private String handledByOfficeName;
+
+    @ExcelIgnore
+    private String status;
+
+    @ExcelIgnore
+    private String statusReturn;
+
+    @ExcelProperty("领用编号")
+    private String collectNo;
+
+    @ExcelProperty("领用人")
+    private String recipientAgent;
+
+    @ExcelProperty("领用人部门")
+    private String recipientOffice;
+
+    @ExcelProperty("领用类型")
+    private String collectType;
+
+    @ExcelProperty("物品名称")
+    private String goodsName;
+
+    @ExcelProperty("领用数量")
+    private String collectNumber;
+
+    @ExcelProperty("单位")
+    private String company;
+
+    @ExcelProperty("领用时间")
+    private String collectDate;
+
+    @ExcelProperty("备注")
+    private String remarks;
+
+    @ExcelProperty("备注")
+    private String detailRemarks;
+}

二进制
jeeplus-modules/jeeplus-psi-management/src/main/resources/dot/领用申请单.xlsx