Browse Source

添加表格写入功能

lwx_dev
erdanergou 3 years ago
parent
commit
9729e729b2
  1. 3
      src/main/java/com/dreamchaser/depository_manage/controller/DownLoadFileController.java
  2. 3
      src/main/java/com/dreamchaser/depository_manage/controller/ExcelController.java
  3. 7
      src/main/java/com/dreamchaser/depository_manage/entity/ApplicationOutRecord.java
  4. 44
      src/main/java/com/dreamchaser/depository_manage/entity/ExcelInfoByMinWrite.java
  5. 51
      src/main/java/com/dreamchaser/depository_manage/entity/ExcelInfoByWrite.java
  6. 6
      src/main/java/com/dreamchaser/depository_manage/mapper/DepositoryRecordMapper.xml
  7. 8
      src/main/java/com/dreamchaser/depository_manage/pojo/ApplicationOutRecordP.java
  8. 11
      src/main/java/com/dreamchaser/depository_manage/service/ExcelService.java
  9. 1
      src/main/java/com/dreamchaser/depository_manage/service/impl/DepositoryRecordServiceImpl.java
  10. 93
      src/main/java/com/dreamchaser/depository_manage/service/impl/ExcelServiceImpl.java
  11. BIN
      src/main/resources/static/upload/PrintTemplate.xlsx
  12. 16
      src/test/java/com/dreamchaser/depository_manage/TestForOther.java

3
src/main/java/com/dreamchaser/depository_manage/controller/DownLoadFileController.java

@ -162,4 +162,7 @@ public class DownLoadFileController {
}

3
src/main/java/com/dreamchaser/depository_manage/controller/ExcelController.java

@ -46,4 +46,7 @@ public class ExcelController {
public ResultVo importInventory(@RequestParam("file") MultipartFile excel){
return excelService.importExcelInventory(excel);
}
}

7
src/main/java/com/dreamchaser/depository_manage/entity/ApplicationOutRecord.java

@ -164,5 +164,12 @@ public class ApplicationOutRecord {
private Integer adminorgId;
/**
* 出库时间
*/
private String outTime;
}

44
src/main/java/com/dreamchaser/depository_manage/entity/ExcelInfoByMinWrite.java

@ -0,0 +1,44 @@
package com.dreamchaser.depository_manage.entity;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* 用于打印的类
*/
@Data
@EqualsAndHashCode
public class ExcelInfoByMinWrite {
/**
* 物料编码
*/
private String mcode;
/**
* 物料名称
*/
private String mname;
/**
* 规格型号
*/
private String mversion;
/**
* 单位
*/
private String munit;
/**
* 库位
*/
private String pcode;
/**
* 数量
*/
private String quantity;
/**
* 项目
*/
private String project;
}

51
src/main/java/com/dreamchaser/depository_manage/entity/ExcelInfoByWrite.java

@ -0,0 +1,51 @@
package com.dreamchaser.depository_manage.entity;
import com.dreamchaser.depository_manage.pojo.ApplicationOutRecordP;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* 用于打印的类
*/
@Data
@EqualsAndHashCode
public class ExcelInfoByWrite {
/**
* 出库单号
*/
private String code;
/**
* 出库日期
*/
private String outTime;
/**
* 出库类别
*/
private String type;
/**
* 仓库
*/
private String dname;
/**
* 部门
*/
private String adminorgName;
/**
* 申请人
*/
private String applicantName;
/**
* 施工单位
*/
private String constructionUnitName;
/**
* 审核人
*/
private String checkerName;
/**
* 制单人
*/
private String producerName;
}

6
src/main/java/com/dreamchaser/depository_manage/mapper/DepositoryRecordMapper.xml

@ -115,6 +115,7 @@
<result column="aormUnit" property="unit" jdbcType="VARCHAR"/>
<result column="aormconstructionunitid" property="constructionUnitId" jdbcType="INTEGER"/>
<result column="aormadminorgid" property="adminorgId" jdbcType="INTEGER"/>
<result column="outTime" property="outTime" jdbcType="INTEGER"/>
</resultMap>
@ -170,7 +171,7 @@
<sql id="ApplicationOutRecordInfo">
aorid,mid,mname,depositoryId,dname,applicantId,applicantTime,applyRemark,aorcode,aorpirce,aorquantity,departmenthead,departmentheadPass,departmentHeadTime,departmentheadMessage,
depositoryManager,depositoryManagerPass,depositoryManagerTime,depositoryManagerMessage,aorstate,istransfer,mcode,placeId,pass,aormUnit,aormconstructionunitid,aormadminorgid,cuname,
cuintroduce,cuaddress
cuintroduce,cuaddress,outTime
</sql>
<sql id="ApplicationOutRecordMinInfo">
@ -1444,6 +1445,9 @@
<if test="placeId != null">
placeId = #{placeId},
</if>
<if test="outTime != null">
outTime = #{outTime},
</if>
<if test="pass != null and pass != ''">
pass = #{pass}
</if>

8
src/main/java/com/dreamchaser/depository_manage/pojo/ApplicationOutRecordP.java

@ -1,6 +1,7 @@
package com.dreamchaser.depository_manage.pojo;
import com.dreamchaser.depository_manage.entity.ApplicationOutRecord;
import com.dreamchaser.depository_manage.utils.DateUtil;
import lombok.Data;
@Data
@ -164,6 +165,12 @@ public class ApplicationOutRecordP {
*/
private Integer adminorgId;
/**
* 出库时间
*/
private String outTime;
public ApplicationOutRecordP(ApplicationOutRecord aor) {
this.id = aor.getId();
this.mid = aor.getMid();
@ -197,5 +204,6 @@ public class ApplicationOutRecordP {
this.constructionUnitId = aor.getConstructionUnitId();
this.constructionUnitName = aor.getConstructionUnitName();
this.adminorgId = aor.getAdminorgId();
this.outTime = aor.getOutTime() == null ? "": DateUtil.TimeStampToDateTime(Long.valueOf(aor.getOutTime()));
}
}

11
src/main/java/com/dreamchaser/depository_manage/service/ExcelService.java

@ -1,5 +1,6 @@
package com.dreamchaser.depository_manage.service;
import com.dreamchaser.depository_manage.entity.UserByPort;
import com.dreamchaser.depository_manage.exception.MyException;
import com.dreamchaser.depository_manage.utils.ResultVo;
import org.springframework.web.multipart.MultipartFile;
@ -27,4 +28,14 @@ public interface ExcelService {
* @return
*/
ResultVo importExcelInventory(MultipartFile file);
/**
* 用于出库订单填充
* @param id 待打印出库订单id
*/
String writeExcelForPrint(Integer id, UserByPort userToken);
}

1
src/main/java/com/dreamchaser/depository_manage/service/impl/DepositoryRecordServiceImpl.java

@ -1785,6 +1785,7 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService {
Map<String, Object> map = new HashMap<>();
map.put("pass", pass);
map.put("id", record.getId());
map.put("outTime",System.currentTimeMillis());
// 修改状态为完成
depositoryRecordMapper.updateApplicationOutRecord(map);

93
src/main/java/com/dreamchaser/depository_manage/service/impl/ExcelServiceImpl.java

@ -1,7 +1,15 @@
package com.dreamchaser.depository_manage.service.impl;
import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.ExcelWriter;
import com.alibaba.excel.enums.WriteDirectionEnum;
import com.alibaba.excel.util.ListUtils;
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.alibaba.fastjson.JSON;
import com.dreamchaser.depository_manage.entity.*;
import com.dreamchaser.depository_manage.mapper.ConstructionUnitMapper;
import com.dreamchaser.depository_manage.mapper.DepositoryRecordMapper;
import com.dreamchaser.depository_manage.mapper.MaterialMapper;
import com.dreamchaser.depository_manage.pojo.InventoryP;
@ -48,6 +56,10 @@ public class ExcelServiceImpl implements ExcelService {
@Autowired
DepositoryRecordMapper depositoryRecordMapper;
@Autowired
ConstructionUnitMapper constructionUnitMapper;
/**
* 用于导入物料名称
*
@ -317,7 +329,7 @@ public class ExcelServiceImpl implements ExcelService {
String code = excelInfoByInventory.getCode();
if (code != null && !"".equals(code)) {
material = materialService.findMaterialByCode(code);
}else{
} else {
material = materialMapper.findMaterialByCondition(insert).get(0);
}
}
@ -412,4 +424,83 @@ public class ExcelServiceImpl implements ExcelService {
log.info("【导入Excel文件】删除临时文件成功,临时文件路径为:{}", filePath);
return ResultVoUtil.returnResultVo(200, readResult, "结果");
}
/**
* 用于出库订单填充
*
* @param id 待打印出库订单id
*/
@Override
public String writeExcelForPrint(Integer id, UserByPort userToken) {
// 获取要打印的出库主单
ApplicationOutRecord record = depositoryRecordMapper.findApplicationOutRecordPById(id);
List<ApplicationOutRecordMin> recordMinList = depositoryRecordMapper.findApplicationOutRecordMinByParent(id);
// 表格模板
String templateFileName = "D://PrintTemplate.xlsx";
// 生成的表格
String fileName = "D://PrintTemplate" + System.currentTimeMillis() + ".xlsx";
// 待打印主数据列表
List<ExcelInfoByWrite> data = ListUtils.newArrayList();
List<ExcelInfoByMinWrite> dataMin = ListUtils.newArrayList();
// 主数据
ExcelInfoByWrite excelInfoByWrite = new ExcelInfoByWrite();
String outTime = record.getOutTime();
if (outTime == null || "".equals(outTime)) {
excelInfoByWrite.setOutTime("");
} else {
excelInfoByWrite.setOutTime(DateUtil.TimeStampToDateTimeForDay(Long.valueOf(outTime)));
}
excelInfoByWrite.setDname(record.getDepositoryName());
excelInfoByWrite.setCode(record.getCode());
UserByPort applicanter = LinkInterfaceUtil.FindUserById(record.getApplicantId(), userToken);
Administration company = LinkInterfaceUtil.getCompany(record.getAdminorgId(), userToken);
excelInfoByWrite.setApplicantName(applicanter.getName());
excelInfoByWrite.setAdminorgName(company.getName());
Integer unitId = record.getConstructionUnitId();
if (unitId != null) {
ConstructionUnit constructionUnitById = constructionUnitMapper.findConstructionUnitById(unitId);
excelInfoByWrite.setConstructionUnitName(constructionUnitById.getName());
} else {
excelInfoByWrite.setConstructionUnitName("");
}
UserByPort checker = LinkInterfaceUtil.FindUserById(record.getDepositoryId(), userToken);
excelInfoByWrite.setCheckerName(checker.getName());
data.add(excelInfoByWrite);
double total = 0;
for (ApplicationOutRecordMin recordMin : recordMinList
) {
ExcelInfoByMinWrite excelInfoByMinWrite = new ExcelInfoByMinWrite();
Material materialById = materialMapper.findMaterialById(recordMin.getMid());
excelInfoByMinWrite.setMname(materialById.getMname());
excelInfoByMinWrite.setMcode(materialById.getCode());
if ("-1".equals(recordMin.getUnit()) || materialById.getUnit().equals(recordMin.getUnit())) {
excelInfoByMinWrite.setMunit(materialById.getUnit());
} else {
excelInfoByMinWrite.setMunit(recordMin.getUnit());
}
excelInfoByMinWrite.setMversion(materialById.getVersion());
Integer placeId = recordMin.getPlaceId();
String pcode = "";
if (placeId != null) {
Place placeById = placeService.findPlaceById(placeId);
pcode = placeById.getKingdeecode();
}
excelInfoByMinWrite.setPcode(pcode);
excelInfoByMinWrite.setQuantity(String.valueOf(recordMin.getQuantity() / 100));
dataMin.add(excelInfoByMinWrite);
total += (double) (recordMin.getQuantity() / 100);
}
try (ExcelWriter excelWriter = EasyExcel.write(fileName).withTemplate(templateFileName).build()) {
WriteSheet writeSheet = EasyExcel.writerSheet().build();
FillConfig fillConfig = FillConfig.builder().direction(WriteDirectionEnum.HORIZONTAL).build();
// 如果有多个list 模板上必须有{前缀.} 这里的前缀就是 data1,然后多个list必须用 FillWrapper包裹
excelWriter.fill(new FillWrapper("data", data), fillConfig, writeSheet);
excelWriter.fill(new FillWrapper("mindata", dataMin), writeSheet);
Map<String, Object> map = new HashMap<String, Object>();
map.put("date", DateUtil.TimeStampToDateTime(System.currentTimeMillis()));
map.put("total", total);
excelWriter.fill(map, writeSheet);
}
return fileName;
}
}

BIN
src/main/resources/static/upload/PrintTemplate.xlsx

Binary file not shown.

16
src/test/java/com/dreamchaser/depository_manage/TestForOther.java

@ -1,5 +1,12 @@
package com.dreamchaser.depository_manage;
import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.ExcelWriter;
import com.alibaba.excel.enums.WriteDirectionEnum;
import com.alibaba.excel.util.ListUtils;
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.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.JSONPObject;
@ -35,6 +42,9 @@ public class TestForOther {
@Autowired
DepositoryRecordService depositoryRecordService;
@Autowired
ExcelService excelService;
@Test
@ -44,11 +54,15 @@ public class TestForOther {
// approver.setUserId("PangFuZhen");
// approvalInfo.setApprover(approver);
// depositoryRecordService.reviewByQyWxApprovalOut("1",approvalInfo,"460f46eaefb46bb0c171029f62e2cea6","2","202303180021", false,2);
UserByPort userByPort = LinkInterfaceUtil.FindUserById(78, null);
String s = excelService.writeExcelForPrint(1, userByPort);
}
}

Loading…
Cancel
Save