添加功能
This commit is contained in:
parent
cf16a46271
commit
ea3c00ce24
|
|
@ -87,7 +87,7 @@ public class BinController extends BaseController {
|
|||
}
|
||||
|
||||
/**
|
||||
* 导出选中的仓库,为空时导出模版
|
||||
* 导出选中的储位,为空时导出模版
|
||||
* @param ids 选中的id集合
|
||||
*/
|
||||
@PostMapping("export")
|
||||
|
|
|
|||
|
|
@ -6,6 +6,7 @@ import com.nflg.wms.common.pojo.PageData;
|
|||
import com.nflg.wms.common.pojo.dto.BomMaterialDTO;
|
||||
import com.nflg.wms.common.pojo.qo.BomSearchQO;
|
||||
import com.nflg.wms.common.pojo.qo.BomUpdateQO;
|
||||
import com.nflg.wms.common.pojo.vo.BomMaterialVO;
|
||||
import com.nflg.wms.starter.BaseController;
|
||||
import jakarta.annotation.Resource;
|
||||
import jakarta.servlet.http.HttpServletResponse;
|
||||
|
|
@ -50,7 +51,7 @@ public class BomController extends BaseController {
|
|||
* @param request 搜索参数
|
||||
*/
|
||||
@PostMapping("search")
|
||||
public ApiResult<PageData<BomMaterialDTO>> search(@Valid @RequestBody BomSearchQO request){
|
||||
public ApiResult<PageData<BomMaterialVO>> search(@Valid @RequestBody BomSearchQO request){
|
||||
return ApiResult.success(bomControllerService.search(request));
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -8,6 +8,7 @@ import com.google.common.collect.Sets;
|
|||
import com.nflg.wms.admin.util.DateTimeUtil;
|
||||
import com.nflg.wms.admin.util.PdfGeneratorUtil;
|
||||
import com.nflg.wms.admin.util.QRCodeUtil;
|
||||
import com.nflg.wms.admin.util.ThymeleafUtil;
|
||||
import com.nflg.wms.common.constant.UserType;
|
||||
import com.nflg.wms.common.pojo.ApiResult;
|
||||
import com.nflg.wms.common.pojo.PageData;
|
||||
|
|
@ -37,10 +38,7 @@ import org.springframework.core.io.ClassPathResource;
|
|||
import org.springframework.transaction.annotation.Transactional;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import org.thymeleaf.TemplateEngine;
|
||||
import org.thymeleaf.context.Context;
|
||||
import org.thymeleaf.templateresolver.ClassLoaderTemplateResolver;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.net.URL;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.*;
|
||||
|
|
@ -157,18 +155,18 @@ public class DeliverNormalOrderController extends BaseController {
|
|||
*/
|
||||
@GetMapping("exportPdf")
|
||||
public void exportPdf(HttpServletResponse response, @Valid @RequestParam @NotNull Long id) throws Exception {
|
||||
// List<WmsDeliverNormalOrderItem> orders = deliverNormalOrderItemService.getByDeliverId(id);
|
||||
// VUtil.trueThrowBusinessError(CollectionUtil.isEmpty(orders)).throwMessage("没有需要导出的数据");
|
||||
List<WmsDeliverNormalOrderItem> orders=new ArrayList<>();
|
||||
orders.add(new WmsDeliverNormalOrderItem()
|
||||
.setMaterialNo("TEST00001")
|
||||
.setMaterialDesc("测试物料")
|
||||
.setBatchNum(new BigDecimal("36"))
|
||||
.setLableNum(4)
|
||||
.setMinPackageNum(new BigDecimal("10"))
|
||||
.setUniqNo(DateTimeUtil.getForDeliverOrderItemNo())
|
||||
.setBatchNo("TEST00001")
|
||||
);
|
||||
List<WmsDeliverNormalOrderItem> orders = deliverNormalOrderItemService.getByDeliverId(id);
|
||||
VUtil.trueThrowBusinessError(CollectionUtil.isEmpty(orders)).throwMessage("没有需要导出的数据");
|
||||
// List<WmsDeliverNormalOrderItem> orders=new ArrayList<>();
|
||||
// orders.add(new WmsDeliverNormalOrderItem()
|
||||
// .setMaterialNo("TEST00001")
|
||||
// .setMaterialDesc("测试物料")
|
||||
// .setBatchNum(new BigDecimal("36"))
|
||||
// .setLableNum(4)
|
||||
// .setMinPackageNum(new BigDecimal("10"))
|
||||
// .setUniqNo(DateTimeUtil.getForDeliverOrderItemNo())
|
||||
// .setBatchNo("TEST00001")
|
||||
// );
|
||||
List<DeliverNormalOrderItemDTO> datas = new ArrayList<>();
|
||||
for (WmsDeliverNormalOrderItem order : orders) {
|
||||
for (int i = 0; i < order.getLableNum(); i++) {
|
||||
|
|
@ -184,15 +182,9 @@ public class DeliverNormalOrderController extends BaseController {
|
|||
datas.add(dto);
|
||||
}
|
||||
}
|
||||
ClassLoaderTemplateResolver resolver = new ClassLoaderTemplateResolver();
|
||||
resolver.setPrefix("/template/qrcode/");
|
||||
resolver.setSuffix(".html");
|
||||
templateEngine.setTemplateResolver(resolver);
|
||||
Map<String, Object> variables = new HashMap<>();
|
||||
variables.put("list", datas);
|
||||
Context context = new Context();
|
||||
context.setVariables(variables);
|
||||
String html = templateEngine.process("dp", context);
|
||||
String html = ThymeleafUtil.generator("/template/qrcode/", "dp", ".html", variables);
|
||||
URL baseUrl = new ClassPathResource("template/qrcode/").getURL();
|
||||
PdfGeneratorUtil.generatePdf("普通物料条码", html,baseUrl.toString(), response);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -123,10 +123,10 @@ public class StructuralPackageController extends BaseController {
|
|||
}
|
||||
|
||||
/**
|
||||
* 导出钢构包
|
||||
* 导出钢构包,id为空时导出模板
|
||||
*/
|
||||
@GetMapping("exportKit")
|
||||
public void exportKit(HttpServletResponse response,@Valid @RequestParam @NotNull Long id) throws Exception {
|
||||
public void exportKit(HttpServletResponse response,@RequestParam(required = false) Long id) throws Exception {
|
||||
packageControllerService.exportKit(response,id);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -12,6 +12,7 @@ import com.nflg.wms.common.pojo.dto.BomImportExcelDTO;
|
|||
import com.nflg.wms.common.pojo.dto.BomMaterialDTO;
|
||||
import com.nflg.wms.common.pojo.qo.BomSearchQO;
|
||||
import com.nflg.wms.common.pojo.qo.BomUpdateQO;
|
||||
import com.nflg.wms.common.pojo.vo.BomMaterialVO;
|
||||
import com.nflg.wms.common.util.DateTimeUtil;
|
||||
import com.nflg.wms.common.util.EecExcelUtil;
|
||||
import com.nflg.wms.common.util.UserUtil;
|
||||
|
|
@ -81,7 +82,7 @@ public class BomControllerService {
|
|||
}).toList());
|
||||
}
|
||||
|
||||
public PageData<BomMaterialDTO> search(@Valid BomSearchQO request) {
|
||||
public PageData<BomMaterialVO> search(@Valid BomSearchQO request) {
|
||||
return bomService.search(request);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -103,7 +103,13 @@ public class StorageControllerService {
|
|||
}
|
||||
|
||||
public IPage<StorageVO> search(@Valid StorageSearchQO request) {
|
||||
return storageService.search(request);
|
||||
IPage<StorageVO> page = storageService.search(request);
|
||||
page.getRecords().forEach(storageVO ->
|
||||
{
|
||||
List<String> binNos = StrUtil.split(storageVO.getBinNos(), ",");
|
||||
storageVO.setBinIds(binService.lambdaQuery().select(WmsBin::getId).in(WmsBin::getNo,binNos).list().stream().map(WmsBin::getId).toList());
|
||||
});
|
||||
return page;
|
||||
}
|
||||
|
||||
@Transactional
|
||||
|
|
|
|||
|
|
@ -7,6 +7,7 @@ import cn.hutool.core.util.StrUtil;
|
|||
import cn.hutool.json.JSONUtil;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.nflg.wms.admin.util.PdfGeneratorUtil;
|
||||
import com.nflg.wms.admin.util.ThymeleafUtil;
|
||||
import com.nflg.wms.common.constant.STATE;
|
||||
import com.nflg.wms.common.pojo.ApiResult;
|
||||
import com.nflg.wms.common.pojo.PageData;
|
||||
|
|
@ -40,8 +41,6 @@ import org.springframework.stereotype.Component;
|
|||
import org.springframework.transaction.annotation.Transactional;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
import org.thymeleaf.TemplateEngine;
|
||||
import org.thymeleaf.context.Context;
|
||||
import org.thymeleaf.templateresolver.ClassLoaderTemplateResolver;
|
||||
import org.ttzero.excel.entity.ListSheet;
|
||||
import org.ttzero.excel.entity.TemplateSheet;
|
||||
import org.ttzero.excel.entity.Workbook;
|
||||
|
|
@ -325,32 +324,34 @@ public class StructuralPackageControllerService {
|
|||
return ApiResult.success();
|
||||
}
|
||||
|
||||
public void exportKit(HttpServletResponse response, @Valid @NotNull Long id) throws IOException {
|
||||
PackageVO packageInfo = packageService.getInfo(id);
|
||||
VUtil.trueThrowBusinessError(Objects.isNull(packageInfo)).throwMessage("数据不存在");
|
||||
List<PackageMaterialDTO> list = JSONUtil.toList(packageInfo.getMaterials(), PackageMaterialDTO.class);
|
||||
response.setContentType(MediaType.APPLICATION_OCTET_STREAM_VALUE);
|
||||
response.setHeader(HttpHeaders.CONTENT_DISPOSITION, "attachment;filename=" + URLEncoder.encode(packageInfo.getNo()+"钢构包.xlsx", StandardCharsets.UTF_8));
|
||||
new Workbook()
|
||||
.addSheet(new TemplateSheet(new ClassPathResource("template/钢构包导出.xlsx").getInputStream())
|
||||
.setData(packageInfo)
|
||||
.setData("list", list)
|
||||
).writeTo(response.getOutputStream());
|
||||
public void exportKit(HttpServletResponse response, Long id) throws IOException {
|
||||
if (Objects.isNull(id)) {
|
||||
response.setContentType(MediaType.APPLICATION_OCTET_STREAM_VALUE);
|
||||
response.setHeader(HttpHeaders.CONTENT_DISPOSITION, "attachment;filename=" + URLEncoder.encode("钢构包导入模板.xlsx", StandardCharsets.UTF_8));
|
||||
new Workbook()
|
||||
.addSheet(new TemplateSheet(new ClassPathResource("template/钢构包导出.xlsx").getInputStream()))
|
||||
.writeTo(response.getOutputStream());
|
||||
} else {
|
||||
PackageVO packageInfo = packageService.getInfo(id);
|
||||
VUtil.trueThrowBusinessError(Objects.isNull(packageInfo)).throwMessage("数据不存在");
|
||||
List<PackageMaterialDTO> list = JSONUtil.toList(packageInfo.getMaterials(), PackageMaterialDTO.class);
|
||||
response.setContentType(MediaType.APPLICATION_OCTET_STREAM_VALUE);
|
||||
response.setHeader(HttpHeaders.CONTENT_DISPOSITION, "attachment;filename=" + URLEncoder.encode(packageInfo.getNo() + "钢构包.xlsx", StandardCharsets.UTF_8));
|
||||
new Workbook()
|
||||
.addSheet(new TemplateSheet(new ClassPathResource("template/钢构包导出.xlsx").getInputStream())
|
||||
.setData(packageInfo)
|
||||
.setData("list", list)
|
||||
).writeTo(response.getOutputStream());
|
||||
}
|
||||
}
|
||||
|
||||
public void exportPdf(HttpServletResponse response, @Valid @NotNull Long id) throws Exception {
|
||||
PackageVO vo = packageService.getInfo(id);
|
||||
VUtil.trueThrowBusinessError(Objects.isNull(vo)).throwMessage("数据不存在");
|
||||
ClassLoaderTemplateResolver resolver = new ClassLoaderTemplateResolver();
|
||||
resolver.setPrefix("/template/");
|
||||
resolver.setSuffix(".html");
|
||||
templateEngine.setTemplateResolver(resolver);
|
||||
Map<String, Object> variables = new HashMap<>();
|
||||
variables.put("info", vo);
|
||||
variables.put("list", vo.getMaterialList());
|
||||
Context context = new Context();
|
||||
context.setVariables(variables);
|
||||
String html = templateEngine.process("StructuralPackage", context);
|
||||
String html = ThymeleafUtil.generator("/template/", "StructuralPackage", ".html", variables);
|
||||
PdfGeneratorUtil.generatePdf(vo.getNo() + "老鼠图", html, response);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,22 @@
|
|||
package com.nflg.wms.admin.util;
|
||||
|
||||
import org.thymeleaf.context.Context;
|
||||
import org.thymeleaf.spring6.SpringTemplateEngine;
|
||||
import org.thymeleaf.templateresolver.ClassLoaderTemplateResolver;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
public class ThymeleafUtil {
|
||||
|
||||
public static String generator(String prefix,String template,String suffix, Map<String, Object> variables){
|
||||
ClassLoaderTemplateResolver resolver = new ClassLoaderTemplateResolver();
|
||||
resolver.setPrefix(prefix);
|
||||
resolver.setSuffix(".html");
|
||||
SpringTemplateEngine engine = new SpringTemplateEngine();
|
||||
engine.setTemplateResolver(resolver);
|
||||
engine.setEnableSpringELCompiler(true);
|
||||
Context context = new Context();
|
||||
context.setVariables(variables);
|
||||
return engine.process("StructuralPackage", context);
|
||||
}
|
||||
}
|
||||
|
|
@ -12,7 +12,7 @@ public class BinExcelExportDTO {
|
|||
* 仓库编码
|
||||
*/
|
||||
@ExcelColumn("*仓库编码")
|
||||
private String warehouseCode;
|
||||
private String warehouseNo;
|
||||
|
||||
/**
|
||||
* 储位编码
|
||||
|
|
|
|||
|
|
@ -15,5 +15,5 @@ public class PackageSearchQO extends PageQO {
|
|||
/**
|
||||
* 机型id
|
||||
*/
|
||||
private Long modelId;
|
||||
private String modelId;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,70 @@
|
|||
package com.nflg.wms.common.pojo.vo;
|
||||
|
||||
import lombok.Data;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.List;
|
||||
|
||||
@Data
|
||||
@Accessors(chain = true)
|
||||
public class BomMaterialVO {
|
||||
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 上级id
|
||||
*/
|
||||
private Long parentId;
|
||||
|
||||
/**
|
||||
* SAP料号
|
||||
*/
|
||||
private String materialNo;
|
||||
|
||||
/**
|
||||
* 物料描述
|
||||
*/
|
||||
private String materialDesc;
|
||||
|
||||
/**
|
||||
* 图号
|
||||
*/
|
||||
private String drawingNo;
|
||||
|
||||
/**
|
||||
* 数量
|
||||
*/
|
||||
private BigDecimal num;
|
||||
|
||||
/**
|
||||
* 重量
|
||||
*/
|
||||
private BigDecimal materialWeight;
|
||||
|
||||
/**
|
||||
* 创建人
|
||||
*/
|
||||
private String createBy;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
private LocalDateTime createTime;
|
||||
|
||||
/**
|
||||
* 最后更新人
|
||||
*/
|
||||
private String updateBy;
|
||||
|
||||
/**
|
||||
* 最后更新时间
|
||||
*/
|
||||
private LocalDateTime updateTime;
|
||||
|
||||
/**
|
||||
* 子节点
|
||||
*/
|
||||
private List<BomMaterialVO> children;
|
||||
}
|
||||
|
|
@ -3,6 +3,7 @@ package com.nflg.wms.common.pojo.vo;
|
|||
import lombok.Data;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.List;
|
||||
|
||||
@Data
|
||||
public class StorageVO {
|
||||
|
|
@ -19,11 +20,21 @@ public class StorageVO {
|
|||
*/
|
||||
private String materialDescribe;
|
||||
|
||||
/**
|
||||
* 仓库id
|
||||
*/
|
||||
private String warehouseId;
|
||||
|
||||
/**
|
||||
* 仓库编码
|
||||
*/
|
||||
private String warehouseNo;
|
||||
|
||||
/**
|
||||
* 储位id列表
|
||||
*/
|
||||
private List<Long> binIds;
|
||||
|
||||
/**
|
||||
* 储位编码
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -2,8 +2,8 @@ package com.nflg.wms.repository.service;
|
|||
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.nflg.wms.common.pojo.PageData;
|
||||
import com.nflg.wms.common.pojo.dto.BomMaterialDTO;
|
||||
import com.nflg.wms.common.pojo.qo.BomSearchQO;
|
||||
import com.nflg.wms.common.pojo.vo.BomMaterialVO;
|
||||
import com.nflg.wms.repository.entity.WmsBom;
|
||||
import jakarta.validation.Valid;
|
||||
|
||||
|
|
@ -23,5 +23,5 @@ public interface IWmsBomService extends IService<WmsBom> {
|
|||
|
||||
void update(Long parentId, List<WmsBom> list);
|
||||
|
||||
PageData<BomMaterialDTO> search(@Valid BomSearchQO request);
|
||||
PageData<BomMaterialVO> search(@Valid BomSearchQO request);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -4,8 +4,8 @@ import cn.hutool.core.collection.CollectionUtil;
|
|||
import cn.hutool.core.util.StrUtil;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.nflg.wms.common.pojo.PageData;
|
||||
import com.nflg.wms.common.pojo.dto.BomMaterialDTO;
|
||||
import com.nflg.wms.common.pojo.qo.BomSearchQO;
|
||||
import com.nflg.wms.common.pojo.vo.BomMaterialVO;
|
||||
import com.nflg.wms.common.util.UserUtil;
|
||||
import com.nflg.wms.common.util.VUtil;
|
||||
import com.nflg.wms.repository.entity.WmsBom;
|
||||
|
|
@ -55,7 +55,7 @@ public class WmsBomServiceImpl extends ServiceImpl<WmsBomMapper, WmsBom> impleme
|
|||
}
|
||||
|
||||
@Override
|
||||
public PageData<BomMaterialDTO> search(BomSearchQO request) {
|
||||
public PageData<BomMaterialVO> search(BomSearchQO request) {
|
||||
List<WmsBom> boms = lambdaQuery()
|
||||
.like(StrUtil.isNotBlank(request.getNo()), WmsBom::getNo, request.getNo())
|
||||
.like(StrUtil.isNotBlank(request.getDescribe()), WmsBom::getDescribe, request.getDescribe())
|
||||
|
|
@ -64,34 +64,34 @@ public class WmsBomServiceImpl extends ServiceImpl<WmsBomMapper, WmsBom> impleme
|
|||
if (CollectionUtil.isNotEmpty(parentIds)) {
|
||||
boms.addAll(listByIds(parentIds));
|
||||
}
|
||||
List<BomMaterialDTO> datas = boms.stream()
|
||||
List<BomMaterialVO> datas = boms.stream()
|
||||
.filter(it -> it.getParentId() == 0L)
|
||||
.sorted(Comparator.comparing(WmsBom::getId))
|
||||
.skip((long) (request.getPage() - 1) * request.getPageSize())
|
||||
.limit(request.getPageSize())
|
||||
.map(it -> new BomMaterialDTO()
|
||||
.map(it -> new BomMaterialVO()
|
||||
.setId(it.getId())
|
||||
.setParentId(it.getParentId())
|
||||
.setMaterialNo(it.getNo())
|
||||
.setMaterialDesc(it.getDescribe())
|
||||
.setDrawingNo(it.getDrawingNo())
|
||||
.setNum(it.getNum())
|
||||
.setMaterialWeight(String.valueOf(it.getWeight()))
|
||||
.setMaterialWeight(it.getWeight())
|
||||
.setChildren(boms.stream()
|
||||
.filter(child -> child.getParentId().equals(it.getId()))
|
||||
.map(child -> {
|
||||
return new BomMaterialDTO()
|
||||
return new BomMaterialVO()
|
||||
.setId(child.getId())
|
||||
.setParentId(child.getParentId())
|
||||
.setMaterialNo(child.getNo())
|
||||
.setMaterialDesc(child.getDescribe())
|
||||
.setDrawingNo(child.getDrawingNo())
|
||||
.setNum(child.getNum())
|
||||
.setMaterialWeight(String.valueOf(child.getWeight()));
|
||||
.setMaterialWeight(child.getWeight());
|
||||
})
|
||||
.toList()
|
||||
)).toList();
|
||||
return new PageData<BomMaterialDTO>()
|
||||
return new PageData<BomMaterialVO>()
|
||||
.setPage(request.getPage())
|
||||
.setPageSize(request.getPageSize())
|
||||
.setTotal(datas.size())
|
||||
|
|
|
|||
|
|
@ -7,6 +7,7 @@
|
|||
FROM (
|
||||
SELECT
|
||||
s.*,
|
||||
wh.id AS "warehouseId",
|
||||
wh.no AS "warehouseNo",
|
||||
m.no AS "materialNo",
|
||||
m.describe AS "materialDescribe",
|
||||
|
|
|
|||
Loading…
Reference in New Issue