Merge remote-tracking branch 'origin/master-hlq20260506ganggoubao'

# Conflicts:
#	nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/StructuralPackageOrderController.java
This commit is contained in:
10001392 2026-05-29 11:01:21 +08:00
commit 1c472cd0a7
26 changed files with 1368 additions and 163 deletions

View File

@ -2,30 +2,32 @@ package com.nflg.wms.admin.service;
import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.convert.Convert; import cn.hutool.core.convert.Convert;
import cn.hutool.core.lang.Pair;
import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.RandomUtil; import cn.hutool.core.util.RandomUtil;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONUtil; import cn.hutool.json.JSONUtil;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.nflg.wms.admin.pojo.dto.PdfPageDTO; import com.nflg.wms.admin.pojo.dto.PdfPageDTO;
import com.nflg.wms.admin.pojo.dto.ZWM3A17DTO;
import com.nflg.wms.admin.pojo.dto.ZWM3A17Item1DTO;
import com.nflg.wms.admin.util.PdfGeneratorUtil; import com.nflg.wms.admin.util.PdfGeneratorUtil;
import com.nflg.wms.admin.util.QRCodeUtil; import com.nflg.wms.admin.util.QRCodeUtil;
import com.nflg.wms.admin.util.ThymeleafUtil; import com.nflg.wms.admin.util.ThymeleafUtil;
import com.nflg.wms.common.constant.Constant;
import com.nflg.wms.common.constant.STATE; import com.nflg.wms.common.constant.STATE;
import com.nflg.wms.common.pojo.ApiResult; import com.nflg.wms.common.pojo.ApiResult;
import com.nflg.wms.common.pojo.PageData; import com.nflg.wms.common.pojo.PageData;
import com.nflg.wms.common.pojo.dto.*; import com.nflg.wms.common.pojo.dto.BomMaterialDTO;
import com.nflg.wms.common.pojo.dto.PackageMaterialDTO;
import com.nflg.wms.common.pojo.dto.PackageMaterialExcelExportDTO;
import com.nflg.wms.common.pojo.dto.PackageMaterialExcelImportDTO;
import com.nflg.wms.common.pojo.qo.*; import com.nflg.wms.common.pojo.qo.*;
import com.nflg.wms.common.pojo.vo.PackageVO; import com.nflg.wms.common.pojo.vo.PackageVO;
import com.nflg.wms.common.util.DateTimeUtil; import com.nflg.wms.common.util.DateTimeUtil;
import com.nflg.wms.common.util.EecExcelUtil; import com.nflg.wms.common.util.EecExcelUtil;
import com.nflg.wms.common.util.UserUtil; import com.nflg.wms.common.util.UserUtil;
import com.nflg.wms.common.util.VUtil; import com.nflg.wms.common.util.VUtil;
import com.nflg.wms.repository.entity.*; import com.nflg.wms.repository.entity.WmsInTaskItem;
import com.nflg.wms.repository.entity.WmsMaterial;
import com.nflg.wms.repository.entity.WmsModel;
import com.nflg.wms.repository.entity.WmsStructuralPackage;
import com.nflg.wms.repository.service.*; import com.nflg.wms.repository.service.*;
import com.nflg.wms.starter.service.BomMaterialService; import com.nflg.wms.starter.service.BomMaterialService;
import com.nflg.wms.starter.service.FileUploadService; import com.nflg.wms.starter.service.FileUploadService;
@ -184,8 +186,8 @@ public class StructuralPackageControllerService {
.addSheet(new ListSheet<>(List.of(new PackageMaterialExcelExportDTO() .addSheet(new ListSheet<>(List.of(new PackageMaterialExcelExportDTO()
.setNo("(必填)零件编码") .setNo("(必填)零件编码")
.setName("(必填)零件名称") .setName("(必填)零件名称")
.setStation("(必填)工位序号") // .setStation("(必填)工位序号")
.setTray("(必填)托盘序号") // .setTray("(必填)托盘序号")
.setWeight(BigDecimal.ZERO) .setWeight(BigDecimal.ZERO)
.setNum(BigDecimal.ZERO) .setNum(BigDecimal.ZERO)
.setVersion("(必填)图纸版本")))) .setVersion("(必填)图纸版本"))))
@ -200,8 +202,8 @@ public class StructuralPackageControllerService {
datas.add(new PackageMaterialExcelExportDTO() datas.add(new PackageMaterialExcelExportDTO()
.setNo("(必填)零件编码") .setNo("(必填)零件编码")
.setName("(必填)零件名称") .setName("(必填)零件名称")
.setStation("(必填)工位序号") // .setStation("(必填)工位序号")
.setTray("(必填)托盘序号") // .setTray("(必填)托盘序号")
.setWeight(BigDecimal.ZERO) .setWeight(BigDecimal.ZERO)
.setNum(BigDecimal.ZERO) .setNum(BigDecimal.ZERO)
.setVersion("(必填)图纸版本")); .setVersion("(必填)图纸版本"));
@ -250,16 +252,16 @@ public class StructuralPackageControllerService {
} else { } else {
materialDTO.setName(dto.getName()); materialDTO.setName(dto.getName());
} }
if (StrUtil.isBlank(dto.getStation())) { /*if (StrUtil.isBlank(dto.getStation())) {
sb.append("工位序号不能为空;"); sb.append("工位序号不能为空;");
} else { } else {*/
materialDTO.setStation(dto.getStation()); materialDTO.setStation(dto.getStation());
} /*}
if (StrUtil.isBlank(dto.getTray())) { if (StrUtil.isBlank(dto.getTray())) {
sb.append("托盘序号不能为空;"); sb.append("托盘序号不能为空;");
} else { } else {*/
materialDTO.setTray(dto.getTray()); materialDTO.setTray(dto.getTray());
} // }
if (StrUtil.isBlank(dto.getNum())) { if (StrUtil.isBlank(dto.getNum())) {
sb.append("数量不能为空;"); sb.append("数量不能为空;");
} else if (!NumberUtils.isCreatable(dto.getNum())) { } else if (!NumberUtils.isCreatable(dto.getNum())) {
@ -353,8 +355,12 @@ public class StructuralPackageControllerService {
&& packageService.lambdaQuery().eq(WmsStructuralPackage::getNo, packageInfo.getNo()).exists()) && packageService.lambdaQuery().eq(WmsStructuralPackage::getNo, packageInfo.getNo()).exists())
.throwMessage("修改日志不能为空"); .throwMessage("修改日志不能为空");
break; break;
case 6:
BigDecimal trayNum = row.getDecimal(1);
packageInfo.setTrayNum(trayNum);
break;
default: default:
if (row.getRowNum() > 7) { if (row.getRowNum() > 8) {
String mno = StrUtil.trim(row.getString(0)); String mno = StrUtil.trim(row.getString(0));
if (StrUtil.isBlank(mno)) { if (StrUtil.isBlank(mno)) {
// sb.append(StrUtil.format("第{}行零件编码不能为空;", row.getRowNum())); // sb.append(StrUtil.format("第{}行零件编码不能为空;", row.getRowNum()));
@ -370,15 +376,14 @@ public class StructuralPackageControllerService {
dto.setName(material1.getDescribe()); dto.setName(material1.getDescribe());
dto.setDrawingNo(material1.getDrawingNo()); dto.setDrawingNo(material1.getDrawingNo());
dto.setImage(material1.getImage()); dto.setImage(material1.getImage());
String v = row.getString(6); String v = row.getString(5);
if (StrUtil.isNotBlank(v)) { if (StrUtil.isNotBlank(v)) {
dto.setVersion(v); dto.setVersion(v);
} else { } else {
dto.setVersion(material1.getVersion()); dto.setVersion(material1.getVersion());
} }
dto.setStation(row.getString(2)); dto.setStation(row.getString(2));
dto.setTray(row.getString(3)); String num = row.getString(3);
String num = row.getString(4);
if (StrUtil.isBlank(num)) { if (StrUtil.isBlank(num)) {
sb.append(StrUtil.format("第{}行数量不能为空;", row.getRowNum())); sb.append(StrUtil.format("第{}行数量不能为空;", row.getRowNum()));
} else if (!NumberUtils.isCreatable(num)) { } else if (!NumberUtils.isCreatable(num)) {
@ -386,13 +391,13 @@ public class StructuralPackageControllerService {
} else { } else {
dto.setNum(new BigDecimal(num)); dto.setNum(new BigDecimal(num));
} }
num = row.getString(5); String singleWeight = row.getString(4);
if (StrUtil.isBlank(num)) { if (StrUtil.isBlank(singleWeight)) {
sb.append(StrUtil.format("第{}行重量不能为空;", row.getRowNum())); sb.append(StrUtil.format("第{}行重量不能为空;", row.getRowNum()));
} else if (!NumberUtils.isCreatable(num)) { } else if (!NumberUtils.isCreatable(singleWeight)) {
sb.append(StrUtil.format("第{}行重量无效;", row.getRowNum())); sb.append(StrUtil.format("第{}行重量无效;", row.getRowNum()));
} else { } else {
dto.setWeight(new BigDecimal(num)); dto.setWeight(new BigDecimal(singleWeight));
} }
dto.setCreateBy(UserUtil.getUserName()); dto.setCreateBy(UserUtil.getUserName());
dto.setCreateTime(DateTimeUtil.format(LocalDate.now(), "yyyy-MM-dd")); dto.setCreateTime(DateTimeUtil.format(LocalDate.now(), "yyyy-MM-dd"));

View File

@ -49,8 +49,7 @@ public class NoUtil {
return new StructuralPackageMaterialQRCodeContentDTO() return new StructuralPackageMaterialQRCodeContentDTO()
.setUniqNo(c1s.size() == 1 ? qrCode : CollectionUtil.get(c1s, 0)) .setUniqNo(c1s.size() == 1 ? qrCode : CollectionUtil.get(c1s, 0))
.setMaterialNo(c1s.size() == 1 ? CollectionUtil.get(c1s, 0) : CollectionUtil.get(c1s, 1)) .setMaterialNo(c1s.size() == 1 ? CollectionUtil.get(c1s, 0) : CollectionUtil.get(c1s, 1))
.setTrayNo(CollectionUtil.get(contents, 1)) .setNum(new BigDecimal(CollectionUtil.get(contents, 1)))
.setNum(new BigDecimal(CollectionUtil.get(contents, 2)))
.setContent(qrCode); .setContent(qrCode);
} }
} }

View File

@ -109,7 +109,8 @@
<tr> <tr>
<td>订单号:<span th:text="${info.externalOrderNo}">12255665451615</span></td> <td>订单号:<span th:text="${info.externalOrderNo}">12255665451615</span></td>
<td>行号:<span th:text="${info.rowNo}">1111</span></td> <td>行号:<span th:text="${info.rowNo}">1111</span></td>
<td>托盘号:<span th:text="${info.trayNo}">1111</span></td> <!-- 托盘号已移除,保留空单元格 -->
<td></td>
<td colspan="2">供应商:<span th:text="${info.supplierName}">1111</span></td> <td colspan="2">供应商:<span th:text="${info.supplierName}">1111</span></td>
<td rowspan="3" class="cell-img" style="width: 130px;"> <td rowspan="3" class="cell-img" style="width: 130px;">
<img alt="" style="width: 100px;" th:src="${info.qrCode}" src="../img/logo1.png"/> <img alt="" style="width: 100px;" th:src="${info.qrCode}" src="../img/logo1.png"/>

View File

@ -0,0 +1,52 @@
package com.nflg.wms.common.pojo.qo;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
import java.io.Serializable;
/**
* 差异项QO
*/
@Data
public class DiffItemQO implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 物料编号
*/
@NotBlank(message = "物料编号不能为空")
private String materialNo;
/**
* 物料描述
*/
@NotBlank(message = "物料描述不能为空")
private String materialDesc;
/**
* 出货数量
*/
@NotNull(message = "出货数量不能为空")
private Integer shipmentNum;
/**
* 已装数量
*/
@NotNull(message = "已装数量不能为空")
private Integer actualQty;
/**
* 差异数量
*/
@NotNull(message = "差异数量不能为空")
private Integer diffQty;
/**
* 差异原因描述必填
*/
@NotBlank(message = "差异原因不能为空")
private String remark;
}

View File

@ -1,5 +1,6 @@
package com.nflg.wms.common.pojo.qo; package com.nflg.wms.common.pojo.qo;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull; import jakarta.validation.constraints.NotNull;
import lombok.Data; import lombok.Data;
@ -14,6 +15,12 @@ public class GenerateTrayQO {
@NotNull @NotNull
private Long packageId; private Long packageId;
/**
* 供应商代码6位数字
*/
@NotBlank
private String supplierCode;
/** /**
* 数量 * 数量
*/ */

View File

@ -0,0 +1,34 @@
package com.nflg.wms.common.pojo.qo;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
import java.io.Serializable;
/**
* 物料汇总QO按物料编号统计
*/
@Data
public class MaterialSummaryQO implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 物料编号
*/
@NotBlank(message = "物料编号不能为空")
private String materialNo;
/**
* 物料描述
*/
@NotBlank(message = "物料描述不能为空")
private String materialDesc;
/**
* 所有托盘该物料的总数量
*/
@NotNull(message = "物料总数量不能为空")
private Integer totalQty;
}

View File

@ -0,0 +1,38 @@
package com.nflg.wms.common.pojo.qo;
import jakarta.validation.Valid;
import jakarta.validation.constraints.NotEmpty;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
import java.io.Serializable;
import java.util.List;
/**
* 钢构件打包提交QO
*/
@Data
public class PackTraySubmitQO implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 订单ID
*/
@NotNull(message = "订单ID不能为空")
private Long orderId;
/**
* 托盘列表
*/
@NotEmpty(message = "托盘列表不能为空")
@Valid
private List<TraySubmitQO> trays;
/**
* 物料汇总列表按物料编号统计的总数量
*/
@NotEmpty(message = "物料汇总列表不能为空")
@Valid
private List<MaterialSummaryQO> materialSummary;
}

View File

@ -0,0 +1,38 @@
package com.nflg.wms.common.pojo.qo;
import jakarta.validation.Valid;
import jakarta.validation.constraints.NotEmpty;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
import java.io.Serializable;
import java.util.List;
/**
* 钢构件打包提交带差异原因QO
*/
@Data
public class PackTraySubmitWithDiffQO implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 订单ID
*/
@NotNull(message = "订单ID不能为空")
private Long orderId;
/**
* 托盘列表
*/
@NotEmpty(message = "托盘列表不能为空")
@Valid
private List<TraySubmitQO> trays;
/**
* 差异列表
*/
@NotEmpty(message = "差异列表不能为空")
@Valid
private List<DiffItemQO> diffList;
}

View File

@ -0,0 +1,40 @@
package com.nflg.wms.common.pojo.qo;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
import java.io.Serializable;
import java.util.List;
/**
* 托盘物料QO
*/
@Data
public class TrayMaterialQO implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 物料编号
*/
@NotBlank(message = "物料编号不能为空")
private String materialNo;
/**
* 物料描述
*/
@NotBlank(message = "物料描述不能为空")
private String materialDesc;
/**
* 二维码列表该物料的所有条码
*/
private List<String> qrCodes;
/**
* 该物料的总数量
*/
@NotNull(message = "物料数量不能为空")
private Integer totalQty;
}

View File

@ -0,0 +1,38 @@
package com.nflg.wms.common.pojo.qo;
import jakarta.validation.Valid;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotEmpty;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
import java.io.Serializable;
import java.util.List;
/**
* 托盘提交QO
*/
@Data
public class TraySubmitQO implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 托盘号
*/
@NotBlank(message = "托盘号不能为空")
private String trayNo;
/**
* 订单ID
*/
@NotNull(message = "订单ID不能为空")
private Long orderId;
/**
* 托盘内物料明细
*/
@NotEmpty(message = "物料明细不能为空")
@Valid
private List<TrayMaterialQO> items;
}

View File

@ -0,0 +1,25 @@
package com.nflg.wms.common.pojo.qo;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
import java.math.BigDecimal;
/**
* 修改钢构包订单托盘数量请求对象
*/
@Data
public class UpdatePackageTrayNumQO {
/**
* 钢构包订单ID
*/
@NotNull(message = "钢构包订单ID不能为空")
private Long orderId;
/**
* 托盘数量
*/
@NotNull(message = "托盘数量不能为空")
private BigDecimal trayNum;
}

View File

@ -5,6 +5,7 @@ import lombok.Data;
import lombok.experimental.Accessors; import lombok.experimental.Accessors;
import org.ttzero.excel.annotation.ExcelColumn; import org.ttzero.excel.annotation.ExcelColumn;
import java.math.BigDecimal;
import java.util.Objects; import java.util.Objects;
@Data @Data
@ -63,6 +64,11 @@ public class DeliverStructuralPackageOrderExtendVO extends DeliverStructuralPack
*/ */
private Short totalNum; private Short totalNum;
/**
* 托盘数量
*/
private BigDecimal trayNum;
public String getStateDesc() { public String getStateDesc() {
if (Objects.isNull(state)) { if (Objects.isNull(state)) {
return ""; return "";

View File

@ -8,6 +8,11 @@ import java.util.List;
@Data @Data
public class DeliverStructuralPackageOrderTrayVO { public class DeliverStructuralPackageOrderTrayVO {
/**
* 订单ID
*/
private Long orderId;
/** /**
* 供应商代码 * 供应商代码
*/ */

View File

@ -0,0 +1,43 @@
package com.nflg.wms.common.pojo.vo;
import lombok.Data;
import java.io.Serializable;
/**
* 差异项VO
*/
@Data
public class DiffItemVO implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 物料编号
*/
private String materialNo;
/**
* 物料描述
*/
private String materialDesc;
/**
* 出货数量
*/
private Integer shipmentNum;
/**
* 已装数量
*/
private Integer actualQty;
/**
* 差异数量
*/
private Integer diffQty;
/**
* 差异原因描述必填
*/
private String remark;
}

View File

@ -0,0 +1,29 @@
package com.nflg.wms.common.pojo.vo;
import lombok.Data;
import java.io.Serializable;
import java.util.List;
/**
* 打包提交返回结果VO
*/
@Data
public class PackTraySubmitResultVO implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 是否有差异
*/
private Boolean hasDiff;
/**
* 差异列表如果有差异
*/
private List<DiffItemVO> diffList;
/**
* 提示信息
*/
private String message;
}

View File

@ -0,0 +1,29 @@
package com.nflg.wms.common.pojo.vo;
import lombok.Data;
import java.io.Serializable;
import java.util.List;
/**
* 钢构件打包提交带差异原因VO
*/
@Data
public class PackTraySubmitWithDiffVO implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 订单ID
*/
private Long orderId;
/**
* 托盘列表
*/
private List<TrayItemVO2> trays;
/**
* 差异列表
*/
private List<DiffItemVO> diffList;
}

View File

@ -58,6 +58,11 @@ public class PackageVO {
*/ */
private BigDecimal weight; private BigDecimal weight;
/**
* 托盘数量
*/
private BigDecimal trayNum;
/** /**
* 种类 * 种类
*/ */

View File

@ -0,0 +1,30 @@
package com.nflg.wms.common.pojo.vo;
import lombok.Data;
import java.io.Serializable;
import java.util.List;
/**
* 托盘项VO
*/
@Data
public class TrayItemVO2 implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 托盘号
*/
private String trayNo;
/**
* 订单ID
*/
private Long orderId;
/**
* 托盘内物料明细
*/
private List<TrayMaterialVO> items;
}

View File

@ -0,0 +1,34 @@
package com.nflg.wms.common.pojo.vo;
import lombok.Data;
import java.io.Serializable;
import java.util.List;
/**
* 托盘物料VO
*/
@Data
public class TrayMaterialVO implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 物料编号
*/
private String materialNo;
/**
* 物料描述
*/
private String materialDesc;
/**
* 二维码列表该物料的所有条码
*/
private List<String> qrCodes;
/**
* 该物料的总数量
*/
private Integer totalQty;
}

View File

@ -20,4 +20,9 @@ public interface WmsStructuralPackageOrderTrayItemMapper extends BaseMapper<WmsS
List<DeliverStructuralPackageOrderTrayItemVO> getListByTrayId(Long id); List<DeliverStructuralPackageOrderTrayItemVO> getListByTrayId(Long id);
List<DeliverStructuralPackageOrderTrayItemSimpleVO> getSimpleListByTrayNo(String trayNo); List<DeliverStructuralPackageOrderTrayItemSimpleVO> getSimpleListByTrayNo(String trayNo);
/**
* 根据订单ID获取物料项列表不依赖托盘关联
*/
List<DeliverStructuralPackageOrderTrayItemVO> getListByOrderId(Long orderId);
} }

View File

@ -31,4 +31,9 @@ public interface IWmsStructuralPackageOrderTrayItemService extends IService<WmsS
List<DeliverStructuralPackageOrderTrayItemSimpleVO> getSimpleListByTrayNo(@Valid @NotBlank String trayNo); List<DeliverStructuralPackageOrderTrayItemSimpleVO> getSimpleListByTrayNo(@Valid @NotBlank String trayNo);
List<WmsStructuralPackageOrderTrayItem> getListByTrayId(Long id); List<WmsStructuralPackageOrderTrayItem> getListByTrayId(Long id);
/**
* 根据订单ID获取物料项列表不依赖托盘关联
*/
List<DeliverStructuralPackageOrderTrayItemVO> getListVOByOrderId(@Valid @NotNull Long orderId);
} }

View File

@ -54,4 +54,9 @@ public class WmsStructuralPackageOrderTrayItemServiceImpl extends ServiceImpl<Wm
public List<WmsStructuralPackageOrderTrayItem> getListByTrayId(Long id) { public List<WmsStructuralPackageOrderTrayItem> getListByTrayId(Long id) {
return lambdaQuery().eq(WmsStructuralPackageOrderTrayItem::getTrayId, id).list(); return lambdaQuery().eq(WmsStructuralPackageOrderTrayItem::getTrayId, id).list();
} }
@Override
public List<DeliverStructuralPackageOrderTrayItemVO> getListVOByOrderId(Long orderId) {
return baseMapper.getListByOrderId(orderId);
}
} }

View File

@ -21,4 +21,16 @@
where ot.no=#{trayNo} where ot.no=#{trayNo}
order by oti.id order by oti.id
</select> </select>
<select id="getListByOrderId" resultType="com.nflg.wms.common.pojo.vo.DeliverStructuralPackageOrderTrayItemVO">
SELECT ROW_NUMBER() OVER (ORDER BY oti.id) AS "index",m.image,m.drawing_no,oti.*,ot."no" as "tray_no",ot."state",
sp."no" as "package_no",sp."name" as "package_desc"
FROM wms_structural_package_order o
INNER JOIN wms_structural_package_order_tray_item oti ON o."id"=oti.order_id
LEFT JOIN wms_structural_package_order_tray ot ON oti.tray_id=ot."id"
LEFT JOIN wms_structural_package sp ON o.package_id=sp."id"
LEFT JOIN wms_material m ON oti.material_no=m."no" and oti."version"=m."version"
where o.id=#{orderId}
order by oti.id
</select>
</mapper> </mapper>

View File

@ -3,17 +3,19 @@
<mapper namespace="com.nflg.wms.repository.mapper.WmsStructuralPackageOrderTrayMapper"> <mapper namespace="com.nflg.wms.repository.mapper.WmsStructuralPackageOrderTrayMapper">
<select id="searchByState" resultType="com.nflg.wms.common.pojo.vo.DeliverStructuralPackageOrderExtendVO"> <select id="searchByState" resultType="com.nflg.wms.common.pojo.vo.DeliverStructuralPackageOrderExtendVO">
SELECT ROW_NUMBER() OVER (ORDER BY o.id desc) AS "index",ot.id,o.*,m.no||wb."no" AS "workbench_code" SELECT ROW_NUMBER() OVER (ORDER BY o.id desc) AS "index",o.*,m.no||wb."no" AS "workbench_code"
,us.supplier_code,us.supplier_name,sp.order_no AS "package_order_no",sp."no" AS "package_no" ,us.supplier_code,us.supplier_name,sp.order_no AS "package_order_no",sp."no" AS "package_no"
,sp."name" AS "package_desc",m."no" AS "model_no",ot.no as "tray_no",ot.tray,ot.station,ot.state,spdom.deliver_id ,sp."name" AS "package_desc",(SELECT COUNT(*) FROM wms_structural_package_order_tray ot WHERE ot.order_id=o.id) AS "trayNum",m."no" AS "model_no",'' as "tray_no",null as "tray",spdom.deliver_id
FROM wms_structural_package_order o FROM wms_structural_package_order o
LEFT JOIN wms_workbench wb ON o.workbench_id=wb."id" LEFT JOIN wms_workbench wb ON o.workbench_id=wb."id"
LEFT JOIN user_supplier us ON o.supplier_id=us.id LEFT JOIN user_supplier us ON o.supplier_id=us.id
LEFT JOIN wms_structural_package sp ON o.package_id=sp."id" LEFT JOIN wms_structural_package sp ON o.package_id=sp."id"
LEFT JOIN wms_model m on o.model_id=m."id" LEFT JOIN wms_model m on o.model_id=m."id"
inner join wms_structural_package_order_tray ot on o.id=ot.order_id
left join wms_structural_package_deliver_order_map spdom on o.id=spdom.order_id left join wms_structural_package_deliver_order_map spdom on o.id=spdom.order_id
where ot.state=#{request.state} where 1=1
<if test="request.state!=null">
and exists (select 1 from wms_structural_package_order_tray ot where ot.order_id=o.id and ot.state=#{request.state})
</if>
<if test="request.orderNo!=null and request.orderNo!=''"> <if test="request.orderNo!=null and request.orderNo!=''">
and o.order_no=#{request.orderNo} and o.order_no=#{request.orderNo}
</if> </if>
@ -27,7 +29,7 @@
and o.external_order_no=#{request.externalOrderNo} and o.external_order_no=#{request.externalOrderNo}
</if> </if>
<if test="request.trayNo!=null and request.trayNo!=''"> <if test="request.trayNo!=null and request.trayNo!=''">
and ot.no=#{request.trayNo} and exists (select 1 from wms_structural_package_order_tray ot where ot.order_id=o.id and ot.no=#{request.trayNo})
</if> </if>
<if test="request.startDate!=null"> <if test="request.startDate!=null">
and o.create_time>= #{request.startDate} and o.create_time>= #{request.startDate}
@ -81,7 +83,7 @@
</select> </select>
<select id="getInfoByNo" resultType="com.nflg.wms.common.pojo.vo.DeliverStructuralPackageOrderTrayVO"> <select id="getInfoByNo" resultType="com.nflg.wms.common.pojo.vo.DeliverStructuralPackageOrderTrayVO">
SELECT o.external_order_no,o.row_no,sp."no" AS "package_no",sp."name" AS "package_desc",ot.num,us.supplier_name SELECT ot.order_id,o.external_order_no,o.row_no,sp."no" AS "package_no",sp."name" AS "package_desc",ot.num,us.supplier_name
,us.supplier_code,ot.state ,us.supplier_code,ot.state
FROM wms_structural_package_order o FROM wms_structural_package_order o
LEFT JOIN wms_workbench wb ON o.workbench_id=wb."id" LEFT JOIN wms_workbench wb ON o.workbench_id=wb."id"