feat(controller): 新增钢构件订单管理功能
- 实现钢构件订单的搜索、保存、删除等基础操作 - 添加托盘生成功能和订单托盘详情查询接口 - 集成SAP订单搜索功能和供应商信息关联 - 实现订单导出功能包括PDF和Excel格式 - 添加二维码生成和物料扫描记录功能 - 实现打包流程和送货单创建功能 - 添加零件标签、托盘标签、齐套标签导出功能 - 集成条码扫描和库存管理相关服务
This commit is contained in:
parent
194e3c8a75
commit
3fccb47858
|
|
@ -53,6 +53,7 @@ import org.springframework.transaction.annotation.Transactional;
|
|||
import org.springframework.web.bind.annotation.*;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
import org.ttzero.excel.entity.ListMapSheet;
|
||||
import org.ttzero.excel.entity.ListSheet;
|
||||
import org.ttzero.excel.entity.Workbook;
|
||||
|
||||
import java.io.ByteArrayInputStream;
|
||||
|
|
@ -132,6 +133,7 @@ public class StructuralPackageOrderController extends BaseController {
|
|||
|
||||
/**
|
||||
* 搜索SAP订单
|
||||
*
|
||||
* @param request 请求参数
|
||||
*/
|
||||
@PostMapping("searchSAPOrder")
|
||||
|
|
@ -349,6 +351,7 @@ public class StructuralPackageOrderController extends BaseController {
|
|||
|
||||
/**
|
||||
* 搜索
|
||||
*
|
||||
* @param request 请求参数
|
||||
*/
|
||||
@PostMapping("search")
|
||||
|
|
@ -358,6 +361,7 @@ public class StructuralPackageOrderController extends BaseController {
|
|||
|
||||
/**
|
||||
* 根据单据号获取列表
|
||||
*
|
||||
* @param orderNo 单据号
|
||||
*/
|
||||
@GetMapping("getList")
|
||||
|
|
@ -367,6 +371,7 @@ public class StructuralPackageOrderController extends BaseController {
|
|||
|
||||
/**
|
||||
* 获取订单托盘详情
|
||||
*
|
||||
* @param id 订单id
|
||||
*/
|
||||
@GetMapping("getTrayInfo")
|
||||
|
|
@ -399,6 +404,7 @@ public class StructuralPackageOrderController extends BaseController {
|
|||
|
||||
/**
|
||||
* 删除
|
||||
*
|
||||
* @param ids 要删除的id列表
|
||||
*/
|
||||
@PostMapping("delete")
|
||||
|
|
@ -409,6 +415,7 @@ public class StructuralPackageOrderController extends BaseController {
|
|||
|
||||
/**
|
||||
* 根据订单状态搜索
|
||||
*
|
||||
* @param request 请求参数
|
||||
*/
|
||||
@PostMapping("searchByState")
|
||||
|
|
@ -418,6 +425,7 @@ public class StructuralPackageOrderController extends BaseController {
|
|||
|
||||
/**
|
||||
* 导出选中的id列表
|
||||
*
|
||||
* @param ids id列表
|
||||
*/
|
||||
@PostMapping("exportByIds")
|
||||
|
|
@ -428,6 +436,7 @@ public class StructuralPackageOrderController extends BaseController {
|
|||
|
||||
/**
|
||||
* 导出搜索结果
|
||||
*
|
||||
* @param request 搜索参数
|
||||
*/
|
||||
@PostMapping("exportSearchByState")
|
||||
|
|
@ -441,6 +450,7 @@ public class StructuralPackageOrderController extends BaseController {
|
|||
|
||||
/**
|
||||
* 获取托盘零件列表
|
||||
*
|
||||
* @param id 托盘id
|
||||
*/
|
||||
@GetMapping("getItems")
|
||||
|
|
@ -450,6 +460,7 @@ public class StructuralPackageOrderController extends BaseController {
|
|||
|
||||
/**
|
||||
* 导出托盘零件列表
|
||||
*
|
||||
* @param id 托盘id
|
||||
*/
|
||||
@PostMapping("exportItems")
|
||||
|
|
@ -460,6 +471,7 @@ public class StructuralPackageOrderController extends BaseController {
|
|||
|
||||
/**
|
||||
* 导出老鼠图PDF
|
||||
*
|
||||
* @param id 托盘id
|
||||
*/
|
||||
@GetMapping("exportPdf")
|
||||
|
|
@ -502,6 +514,7 @@ public class StructuralPackageOrderController extends BaseController {
|
|||
|
||||
/**
|
||||
* 导出零件标签PDF
|
||||
*
|
||||
* @param id 托盘id
|
||||
*/
|
||||
@GetMapping("exportItemPdf")
|
||||
|
|
@ -537,6 +550,7 @@ public class StructuralPackageOrderController extends BaseController {
|
|||
|
||||
/**
|
||||
* 导出零件标签图片ZIP
|
||||
*
|
||||
* @param id 托盘id
|
||||
*/
|
||||
@GetMapping(value = "exportItemImageZip", produces = "application/zip")
|
||||
|
|
@ -586,6 +600,7 @@ public class StructuralPackageOrderController extends BaseController {
|
|||
|
||||
/**
|
||||
* 导出托盘标签PDF
|
||||
*
|
||||
* @param id 托盘id
|
||||
*/
|
||||
@GetMapping("exportTrayPdf")
|
||||
|
|
@ -602,6 +617,7 @@ public class StructuralPackageOrderController extends BaseController {
|
|||
|
||||
/**
|
||||
* 导出托盘标签图片
|
||||
*
|
||||
* @param id 托盘id
|
||||
*/
|
||||
@GetMapping(value = "exportTrayImage", produces = MediaType.IMAGE_PNG_VALUE)
|
||||
|
|
@ -621,6 +637,7 @@ public class StructuralPackageOrderController extends BaseController {
|
|||
|
||||
/**
|
||||
* 导出齐套标签PDF
|
||||
*
|
||||
* @param id 托盘id
|
||||
*/
|
||||
@GetMapping("exportQiTaoPdf")
|
||||
|
|
@ -639,6 +656,7 @@ public class StructuralPackageOrderController extends BaseController {
|
|||
|
||||
/**
|
||||
* 导出齐套标签图片
|
||||
*
|
||||
* @param id 托盘id
|
||||
*/
|
||||
@GetMapping(value = "exportQiTaoImage", produces = MediaType.IMAGE_PNG_VALUE)
|
||||
|
|
@ -672,6 +690,7 @@ public class StructuralPackageOrderController extends BaseController {
|
|||
|
||||
/**
|
||||
* 打包托盘(PDA使用)
|
||||
*
|
||||
* @param request 请求参数
|
||||
*/
|
||||
@Transactional
|
||||
|
|
@ -729,6 +748,7 @@ public class StructuralPackageOrderController extends BaseController {
|
|||
|
||||
/**
|
||||
* 保存物料二维码扫描记录
|
||||
*
|
||||
* @param qrCodes 二维码列表
|
||||
* @param type 类型
|
||||
*/
|
||||
|
|
@ -755,6 +775,7 @@ public class StructuralPackageOrderController extends BaseController {
|
|||
|
||||
/**
|
||||
* 退回到未打包
|
||||
*
|
||||
* @param id 托盘id
|
||||
*/
|
||||
@GetMapping("backToUnpackaged")
|
||||
|
|
@ -776,6 +797,7 @@ public class StructuralPackageOrderController extends BaseController {
|
|||
|
||||
/**
|
||||
* 创建送货单
|
||||
*
|
||||
* @param ids 托盘id
|
||||
*/
|
||||
@Transactional
|
||||
|
|
@ -809,6 +831,7 @@ public class StructuralPackageOrderController extends BaseController {
|
|||
|
||||
/**
|
||||
* 搜索送货单
|
||||
*
|
||||
* @param request 查询参数
|
||||
*/
|
||||
@PostMapping("searchDeliverOrder")
|
||||
|
|
@ -818,6 +841,7 @@ public class StructuralPackageOrderController extends BaseController {
|
|||
|
||||
/**
|
||||
* 获取送货单详情信息
|
||||
*
|
||||
* @param id 送货单ID
|
||||
*/
|
||||
@GetMapping("getDeliverOrderInfo")
|
||||
|
|
@ -827,6 +851,7 @@ public class StructuralPackageOrderController extends BaseController {
|
|||
|
||||
/**
|
||||
* 导出送货单
|
||||
*
|
||||
* @param id 送货单id
|
||||
*/
|
||||
@GetMapping("exportDeliverOrder")
|
||||
|
|
@ -873,6 +898,7 @@ public class StructuralPackageOrderController extends BaseController {
|
|||
|
||||
/**
|
||||
* 根据送货单号查询订单信息(PDA使用)
|
||||
*
|
||||
* @param orderNo 送货单号
|
||||
*/
|
||||
@GetMapping("getInfoByDeliverOrderNo")
|
||||
|
|
@ -915,6 +941,7 @@ public class StructuralPackageOrderController extends BaseController {
|
|||
|
||||
/**
|
||||
* 线下收货
|
||||
*
|
||||
* @param itemIds 零件项id列表
|
||||
*/
|
||||
@Transactional
|
||||
|
|
@ -943,6 +970,7 @@ public class StructuralPackageOrderController extends BaseController {
|
|||
|
||||
/**
|
||||
* 收货(PDA使用)
|
||||
*
|
||||
* @param request 请求参数
|
||||
*/
|
||||
@Transactional
|
||||
|
|
@ -1145,12 +1173,12 @@ public class StructuralPackageOrderController extends BaseController {
|
|||
*/
|
||||
@PostMapping("exportTemplate")
|
||||
public void exportTemplate(HttpServletResponse response) throws IOException {
|
||||
Map<String, Object> datas = new LinkedHashMap<>();
|
||||
Map<String, String> datas = new LinkedHashMap<>();
|
||||
datas.put("供应商编码*", "必填");
|
||||
datas.put("机型*", "必填");
|
||||
datas.put("机台序号*", "必填");
|
||||
datas.put("钢构包物料*", "必填");
|
||||
datas.put("期望交期", "不填为今天,格式2025/10/05");
|
||||
datas.put("期望交期", "不填为今天,格式2025-03-05");
|
||||
datas.put("采购订单号*", "必填");
|
||||
datas.put("行项目*", "0010");
|
||||
datas.put("数量*", "必填");
|
||||
|
|
@ -1163,12 +1191,12 @@ public class StructuralPackageOrderController extends BaseController {
|
|||
*/
|
||||
@PostMapping("importOrder")
|
||||
public ApiResult importOrder(MultipartFile file) throws IOException {
|
||||
List<Map<String, Object>> datas = EecExcelUtil.handlerExcel(file.getInputStream());
|
||||
List<StructuralPackageOrderExportDTO> datas = EecExcelUtil.getExcelContext(file.getInputStream(), StructuralPackageOrderExportDTO.class);
|
||||
List<StructuralPackageOrderImportDTO> list = new ArrayList<>();
|
||||
StringBuilder sb = new StringBuilder();
|
||||
datas.forEach(data -> {
|
||||
sb.setLength(0);
|
||||
String supplierCode = StrUtil.trim(data.get("供应商编码*").toString());
|
||||
String supplierCode = StrUtil.trim(data.getSupplierCode()); //StrUtil.trim(data.get("供应商编码*").toString());
|
||||
Long supplierId = null;
|
||||
if (StrUtil.isBlank(supplierCode)) {
|
||||
sb.append("供应商编码不能为空;");
|
||||
|
|
@ -1180,7 +1208,7 @@ public class StructuralPackageOrderController extends BaseController {
|
|||
supplierId = supplier.getId();
|
||||
}
|
||||
}
|
||||
String modelNo = StrUtil.trim(data.get("机型*").toString());
|
||||
String modelNo = StrUtil.trim(data.getModelNo()); //StrUtil.trim(data.get("机型*").toString());
|
||||
Long modelId = null;
|
||||
if (StrUtil.isBlank(modelNo)) {
|
||||
sb.append("机型不能为空;");
|
||||
|
|
@ -1195,7 +1223,7 @@ public class StructuralPackageOrderController extends BaseController {
|
|||
modelId = model.getId();
|
||||
}
|
||||
}
|
||||
String workbenchNo = StrUtil.trim(data.get("机台序号*").toString());
|
||||
String workbenchNo = StrUtil.trim(data.getWorkbenchNo()); //StrUtil.trim(data.get("机台序号*").toString());
|
||||
Long workbenchId = null;
|
||||
if (StrUtil.isBlank(workbenchNo)) {
|
||||
sb.append("机台序号不能为空;");
|
||||
|
|
@ -1210,7 +1238,7 @@ public class StructuralPackageOrderController extends BaseController {
|
|||
workbenchId = workbench.getId();
|
||||
}
|
||||
}
|
||||
String materialNo = StrUtil.trim(data.get("钢构包物料*").toString());
|
||||
String materialNo = StrUtil.trim(data.getMaterialNo()); //StrUtil.trim(data.get("钢构包物料*").toString());
|
||||
PackageVO packageVO = null;
|
||||
if (StrUtil.isBlank(materialNo)) {
|
||||
sb.append("钢构包物料不能为空;");
|
||||
|
|
@ -1220,13 +1248,13 @@ public class StructuralPackageOrderController extends BaseController {
|
|||
sb.append("钢构包物料无效;");
|
||||
}
|
||||
}
|
||||
String expectDeliveryDate = StrUtil.trim(data.get("期望交期").toString());
|
||||
String expectDeliveryDate = StrUtil.trim(data.getExpectDeliveryDate()); //StrUtil.trim(data.get("期望交期").toString());
|
||||
if (StrUtil.isBlank(expectDeliveryDate)) {
|
||||
expectDeliveryDate = DateTimeUtil.format(LocalDate.now(), "yyyy/MM/dd");
|
||||
expectDeliveryDate = DateTimeUtil.format(LocalDate.now(), "yyyy-MM-dd");
|
||||
} else if (!DateTimeUtil.isValidDate(expectDeliveryDate)) {
|
||||
sb.append("期望交期无效;");
|
||||
sb.append("期望交期格式不正确,应为2026-03-30;");
|
||||
}
|
||||
String snum = StrUtil.trim(data.get("数量*").toString());
|
||||
String snum = StrUtil.trim(data.getNum()); //StrUtil.trim(data.get("数量*").toString());
|
||||
BigDecimal num = null;
|
||||
if (StrUtil.isBlank(snum)) {
|
||||
sb.append("数量不能为空;");
|
||||
|
|
@ -1238,8 +1266,8 @@ public class StructuralPackageOrderController extends BaseController {
|
|||
sb.append("数量必须大于0;");
|
||||
}
|
||||
}
|
||||
String poNum = StrUtil.trim(data.get("采购订单号*").toString());
|
||||
String rowNo = StrUtil.trim(data.get("行项目*").toString());
|
||||
String poNum = StrUtil.trim(data.getPoNum()); //StrUtil.trim(data.get("采购订单号*").toString());
|
||||
String rowNo = StrUtil.trim(data.getRowNo()); // StrUtil.trim(data.get("行项目*").toString());
|
||||
BigDecimal transportNum = num;
|
||||
if (StrUtil.isBlank(poNum)) {
|
||||
sb.append("采购订单号不能为空;");
|
||||
|
|
@ -1290,13 +1318,13 @@ public class StructuralPackageOrderController extends BaseController {
|
|||
.setTransportNum(transportNum)
|
||||
);
|
||||
} else {
|
||||
data.put("错误信息", sb.toString());
|
||||
data.setError(sb.toString());
|
||||
}
|
||||
});
|
||||
if (list.size() != datas.size()) {
|
||||
try (ByteArrayOutputStream osOut = new ByteArrayOutputStream()) {
|
||||
new Workbook()
|
||||
.addSheet(new ListMapSheet<>(datas))
|
||||
.addSheet(new ListSheet<>(datas))
|
||||
.writeTo(osOut);
|
||||
try (ByteArrayInputStream isIn = new ByteArrayInputStream(osOut.toByteArray())) {
|
||||
return ApiResult.error(STATE.DataNoCheckPass, "导入文件失败", fileUploadService.upload("temp/" + DateTimeUtil.format(LocalDate.now(), "yyyyMMdd") + "/" + IdUtil.fastUUID() + ".xlsx", isIn, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"));
|
||||
|
|
@ -1315,6 +1343,7 @@ public class StructuralPackageOrderController extends BaseController {
|
|||
|
||||
/**
|
||||
* 添加备注
|
||||
*
|
||||
* @param request 请求参数
|
||||
*/
|
||||
@PostMapping("itemRemark")
|
||||
|
|
|
|||
|
|
@ -0,0 +1,35 @@
|
|||
package com.nflg.wms.admin.pojo.dto;
|
||||
|
||||
import lombok.Data;
|
||||
import org.ttzero.excel.annotation.ExcelColumn;
|
||||
|
||||
@Data
|
||||
public class StructuralPackageOrderExportDTO {
|
||||
|
||||
@ExcelColumn(value = "供应商编码*")
|
||||
private String supplierCode;
|
||||
|
||||
@ExcelColumn(value = "机型*")
|
||||
private String modelNo;
|
||||
|
||||
@ExcelColumn(value = "机台序号*")
|
||||
private String workbenchNo;
|
||||
|
||||
@ExcelColumn(value = "钢构包物料*")
|
||||
private String materialNo;
|
||||
|
||||
@ExcelColumn(value = "期望交期")
|
||||
private String expectDeliveryDate;
|
||||
|
||||
@ExcelColumn(value = "采购订单号*")
|
||||
private String poNum;
|
||||
|
||||
@ExcelColumn(value = "行项目*")
|
||||
private String rowNo;
|
||||
|
||||
@ExcelColumn(value = "数量*")
|
||||
private String num;
|
||||
|
||||
@ExcelColumn(value = "错误信息")
|
||||
private String error;
|
||||
}
|
||||
|
|
@ -3,7 +3,7 @@
|
|||
<head>
|
||||
<meta charset="UTF-8"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
|
||||
<title>成本中心领料单</title>
|
||||
<title th:text="${base.title}">成本中心领料单</title>
|
||||
<style>
|
||||
@page {
|
||||
size: A4 landscape; /* 横向 A4 */
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@
|
|||
<head>
|
||||
<meta charset="UTF-8"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
|
||||
<title>成品订单入库单</title>
|
||||
<title th:text="${base.title}">成品订单入库单</title>
|
||||
<style>
|
||||
@page {
|
||||
size: A4 landscape; /* 横向 A4 */
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@
|
|||
<head>
|
||||
<meta charset="UTF-8"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
|
||||
<title>生产补料单</title>
|
||||
<title th:text="${base.title}">生产补料单</title>
|
||||
<style>
|
||||
@page {
|
||||
size: A4 landscape; /* 横向 A4 */
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@
|
|||
<head>
|
||||
<meta charset="UTF-8"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
|
||||
<title>生产退料单</title>
|
||||
<title th:text="${base.title}">生产退料单</title>
|
||||
<style>
|
||||
@page {
|
||||
size: A4 landscape; /* 横向 A4 */
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@
|
|||
<head>
|
||||
<meta charset="UTF-8"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
|
||||
<title>生产领料出库单</title>
|
||||
<title th:text="${base.title}">生产领料出库单</title>
|
||||
<style>
|
||||
@page {
|
||||
size: A4 landscape; /* 横向 A4 */
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@
|
|||
<head>
|
||||
<meta charset="UTF-8"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
|
||||
<title>成品发货领料单</title>
|
||||
<title th:text="${base.title}">成品发货领料单</title>
|
||||
<style>
|
||||
@media print {
|
||||
@page {
|
||||
|
|
|
|||
|
|
@ -12,6 +12,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
|
|
@ -26,6 +27,9 @@ public class WmsComponentPackingServiceImpl extends ServiceImpl<WmsComponentPack
|
|||
|
||||
@Override
|
||||
public IPage<ComponentPackingVO> search(ComponentPackingQO request) {
|
||||
if (Objects.nonNull(request.getStartDate())){
|
||||
request.setStartDate(request.getStartDate().minusDays(1));
|
||||
}
|
||||
return baseMapper.search(request, new Page<>(request.getPage(), request.getPageSize()));
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue