Browse Source

Merge branch 'master' into dev

dev
han\hanst 16 hours ago
parent
commit
81b8c159cb
  1. 4
      src/main/java/com/gaotao/modules/automatedWarehouse/service/impl/PalletMergeQueryServiceImpl.java
  2. 15
      src/main/java/com/gaotao/modules/base/utils/ZplGenerator.java
  3. 22
      src/main/resources/mapper/automatedWarehouse/PalletMergeQueryMapper.xml

4
src/main/java/com/gaotao/modules/automatedWarehouse/service/impl/PalletMergeQueryServiceImpl.java

@ -38,6 +38,7 @@ import java.util.Map;
*/ */
@Service @Service
public class PalletMergeQueryServiceImpl implements PalletMergeQueryService { public class PalletMergeQueryServiceImpl implements PalletMergeQueryService {
@Autowired @Autowired
private PalletMergeQueryMapper palletMergeQueryMapper; private PalletMergeQueryMapper palletMergeQueryMapper;
@ -81,8 +82,9 @@ public class PalletMergeQueryServiceImpl implements PalletMergeQueryService {
* <p><b>查询逻辑</b></p> * <p><b>查询逻辑</b></p>
* <ol> * <ol>
* <li>如果前端传入maxPositionCount则使用否则计算该类型最大已用位置数</li> * <li>如果前端传入maxPositionCount则使用否则计算该类型最大已用位置数</li>
* <li>查询立库中该类型的栈板count>0 count<最大count</li>
* <li>查询立库中该类型的栈板count>0 count&lt;最大count</li>
* <li>只查询calling_flag='N'的栈板</li> * <li>只查询calling_flag='N'的栈板</li>
* <li>SQL排除pallet.sore_type=3直接出库托</li>
* <li>按count从小到大排序</li> * <li>按count从小到大排序</li>
* <li>返回分页结果</li> * <li>返回分页结果</li>
* </ol> * </ol>

15
src/main/java/com/gaotao/modules/base/utils/ZplGenerator.java

@ -6,8 +6,7 @@ import lombok.extern.slf4j.Slf4j;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.math.RoundingMode; import java.math.RoundingMode;
import java.util.ArrayList;
import java.util.List;
import java.util.*;
import com.google.zxing.*; import com.google.zxing.*;
import com.google.zxing.client.j2se.MatrixToImageWriter; import com.google.zxing.client.j2se.MatrixToImageWriter;
@ -17,10 +16,6 @@ import javax.imageio.ImageIO;
import java.awt.image.BufferedImage; import java.awt.image.BufferedImage;
import java.io.ByteArrayInputStream; import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream; import java.io.ByteArrayOutputStream;
import java.util.Collections;
import java.util.HashMap;
import java.util.Locale;
import java.util.Map;
import java.util.regex.Pattern; import java.util.regex.Pattern;
/** /**
@ -29,7 +24,7 @@ import java.util.regex.Pattern;
*/ */
@Slf4j @Slf4j
public class ZplGenerator { public class ZplGenerator {
private static final String DEFAULT_FONT_FILE = "ARIAL UNICODE MS.TTF";
private static final String DEFAULT_FONT_FILE = "SIMSUN.TTF";
/** /**
* 越南文常用字符覆盖 * 越南文常用字符覆盖
* - 基础越南文字母Ă/ă Â/â Ê/ê Ô/ô Ơ/ơ Ư/ư Đ/đ * - 基础越南文字母Ă/ă Â/â Ê/ê Ô/ô Ơ/ơ Ư/ư Đ/đ
@ -45,7 +40,7 @@ public class ZplGenerator {
private static final int VIETNAMESE_BITMAP_Y_OFFSET = -5; private static final int VIETNAMESE_BITMAP_Y_OFFSET = -5;
/** /**
* 兼容既有标签默认字体仍绑定J槽位 * 兼容既有标签默认字体仍绑定J槽位
* 历史模板大量依赖 default -> ^CWJ,E:* 的行为默认字体改为 ARIAL UNICODE MS 仍保持 J 槽位
* 历史模板大量依赖 default -> ^CWJ,E:* 的行为默认字体使用 SIMSUN.TTF仍保持 J 槽位
* 避免中文预览/打印丢失 * 避免中文预览/打印丢失
*/ */
private static final String DEFAULT_FONT_LETTER = "J"; private static final String DEFAULT_FONT_LETTER = "J";
@ -165,7 +160,7 @@ public class ZplGenerator {
if (Boolean.TRUE.equals(element.getIsChecked())) { if (Boolean.TRUE.equals(element.getIsChecked())) {
zpl.append("^FO").append(x - 60).append(",").append(y) zpl.append("^FO").append(x - 60).append(",").append(y)
.append("^GB45,45,2,B,0^FS ^FO").append(x - 50).append(",").append(y + 10) .append("^GB45,45,2,B,0^FS ^FO").append(x - 50).append(",").append(y + 10)
.append("^AJN,35,35^FD√^FS\n");
.append("^CI28^CWJ,E:").append(DEFAULT_FONT_FILE).append("^AJN,35,35^FD√^FS\n");
} }
// 业务原因越南文在部分机型的TTF字形渲染存在缺字改走位图可规避固件字形缺失 // 业务原因越南文在部分机型的TTF字形渲染存在缺字改走位图可规避固件字形缺失
@ -411,7 +406,7 @@ public class ZplGenerator {
private String resolveBitmapFontFamily(String fontFamily) { private String resolveBitmapFontFamily(String fontFamily) {
if (fontFamily == null || fontFamily.trim().isEmpty() || "default".equalsIgnoreCase(fontFamily.trim())) { if (fontFamily == null || fontFamily.trim().isEmpty() || "default".equalsIgnoreCase(fontFamily.trim())) {
return "Arial Unicode MS";
return "SimSun";
} }
String normalized = fontFamily.trim(); String normalized = fontFamily.trim();
if (normalized.toUpperCase(Locale.ROOT).endsWith(".TTF")) { if (normalized.toUpperCase(Locale.ROOT).endsWith(".TTF")) {

22
src/main/resources/mapper/automatedWarehouse/PalletMergeQueryMapper.xml

@ -4,7 +4,7 @@
<!-- rqrq - 获取托盘类型下拉选项(wcs_auto_sort='Y' 且 pallet_family != 'A02') --> <!-- rqrq - 获取托盘类型下拉选项(wcs_auto_sort='Y' 且 pallet_family != 'A02') -->
<select id="getPalletTypeOptions" resultType="PalletTypeOption"> <select id="getPalletTypeOptions" resultType="PalletTypeOption">
SELECT
SELECT
pt.pallet_type AS palletType, pt.pallet_type AS palletType,
pt.type_desc AS typeDesc pt.type_desc AS typeDesc
FROM pallet_type pt FROM pallet_type pt
@ -16,12 +16,12 @@
</select> </select>
<!-- rqrq - 获取该类型在立库中装得最多的栈板的已用位置数 --> <!-- rqrq - 获取该类型在立库中装得最多的栈板的已用位置数 -->
<!-- 立库中的栈板:pallet_family IS NOT NULL -->
<!-- 立库中的栈板:wcs_location非空 -->
<!-- 已用位置数:pallet_detail中 position+layer 的唯一组合数 --> <!-- 已用位置数:pallet_detail中 position+layer 的唯一组合数 -->
<select id="getMaxPositionCount" resultType="Integer"> <select id="getMaxPositionCount" resultType="Integer">
SELECT MAX(position_count) AS maxPositionCount SELECT MAX(position_count) AS maxPositionCount
FROM ( FROM (
SELECT
SELECT
pd.pallet_id, pd.pallet_id,
COUNT(DISTINCT CONCAT(ISNULL(pd.position, ''), '_', ISNULL(CAST(pd.layer AS VARCHAR), ''))) AS position_count COUNT(DISTINCT CONCAT(ISNULL(pd.position, ''), '_', ISNULL(CAST(pd.layer AS VARCHAR), ''))) AS position_count
FROM pallet p FROM pallet p
@ -36,10 +36,10 @@
</select> </select>
<!-- rqrq - 查询需要合托的托盘列表 --> <!-- rqrq - 查询需要合托的托盘列表 -->
<!-- 条件:立库中、calling_flag='N'、count>0 且 count<最大count -->
<!-- 条件:立库中、calling_flag='N'、count>0 且 count<最大count;sore_type=3直接出库托过重,不能自动/手动合托 -->
<!-- 排序:按已用位置数从小到大 --> <!-- 排序:按已用位置数从小到大 -->
<select id="searchPalletMergeList" resultType="PalletMergeQueryData"> <select id="searchPalletMergeList" resultType="PalletMergeQueryData">
SELECT
SELECT
t.site, t.site,
t.palletId, t.palletId,
t.palletType, t.palletType,
@ -48,7 +48,7 @@
t.usedPositionCount, t.usedPositionCount,
pt.type_desc AS typeDesc pt.type_desc AS typeDesc
FROM ( FROM (
SELECT
SELECT
p.site AS site, p.site AS site,
p.pallet_id AS palletId, p.pallet_id AS palletId,
p.pallet_type AS palletType, p.pallet_type AS palletType,
@ -62,6 +62,7 @@
AND p.wcs_location IS NOT NULL AND p.wcs_location IS NOT NULL
AND p.calling_flag = 'N' AND p.calling_flag = 'N'
AND p.is_deleted = '0' AND p.is_deleted = '0'
AND ISNULL(p.sore_type, 0) &lt;&gt; 3
GROUP BY p.site, p.pallet_id, p.pallet_type, p.location_code, p.calling_flag GROUP BY p.site, p.pallet_id, p.pallet_type, p.location_code, p.calling_flag
HAVING COUNT(DISTINCT CONCAT(ISNULL(pd.position, ''), '_', ISNULL(CAST(pd.layer AS VARCHAR), ''))) > 0 HAVING COUNT(DISTINCT CONCAT(ISNULL(pd.position, ''), '_', ISNULL(CAST(pd.layer AS VARCHAR), ''))) > 0
AND COUNT(DISTINCT CONCAT(ISNULL(pd.position, ''), '_', ISNULL(CAST(pd.layer AS VARCHAR), ''))) &lt; #{maxPositionCount} AND COUNT(DISTINCT CONCAT(ISNULL(pd.position, ''), '_', ISNULL(CAST(pd.layer AS VARCHAR), ''))) &lt; #{maxPositionCount}
@ -70,10 +71,10 @@
ORDER BY t.usedPositionCount ASC ORDER BY t.usedPositionCount ASC
</select> </select>
<!-- rqrq - 查询需要合托的托盘列表(分页版本) -->
<!-- rqrq - 查询需要合托的托盘列表(分页版本);排除pallet.sore_type=3直接出库托,过重无法合托 -->
<!-- 支持前端传入maxPositionCount作为筛选条件 --> <!-- 支持前端传入maxPositionCount作为筛选条件 -->
<select id="searchPalletMergeListPage" parameterType="PalletMergeQueryData" resultType="PalletMergeQueryData"> <select id="searchPalletMergeListPage" parameterType="PalletMergeQueryData" resultType="PalletMergeQueryData">
SELECT
SELECT
t.site, t.site,
t.palletId, t.palletId,
t.palletType, t.palletType,
@ -82,7 +83,7 @@
t.usedPositionCount, t.usedPositionCount,
pt.type_desc AS typeDesc pt.type_desc AS typeDesc
FROM ( FROM (
SELECT
SELECT
p.site AS site, p.site AS site,
p.pallet_id AS palletId, p.pallet_id AS palletId,
p.pallet_type AS palletType, p.pallet_type AS palletType,
@ -96,6 +97,7 @@
AND p.wcs_location IS NOT NULL AND p.wcs_location IS NOT NULL
AND p.calling_flag = 'N' AND p.calling_flag = 'N'
AND p.is_deleted = '0' AND p.is_deleted = '0'
AND ISNULL(p.sore_type, 0) &lt;&gt; 3
GROUP BY p.site, p.pallet_id, p.pallet_type, p.location_code, p.calling_flag GROUP BY p.site, p.pallet_id, p.pallet_type, p.location_code, p.calling_flag
HAVING COUNT(DISTINCT CONCAT(ISNULL(pd.position, ''), '_', ISNULL(CAST(pd.layer AS VARCHAR), ''))) > 0 HAVING COUNT(DISTINCT CONCAT(ISNULL(pd.position, ''), '_', ISNULL(CAST(pd.layer AS VARCHAR), ''))) > 0
AND COUNT(DISTINCT CONCAT(ISNULL(pd.position, ''), '_', ISNULL(CAST(pd.layer AS VARCHAR), ''))) &lt;= #{query.maxPositionCount} AND COUNT(DISTINCT CONCAT(ISNULL(pd.position, ''), '_', ISNULL(CAST(pd.layer AS VARCHAR), ''))) &lt;= #{query.maxPositionCount}
@ -106,7 +108,7 @@
<!-- rqrq - 查询栈板上的所有物料明细(用于合托推送WCS) --> <!-- rqrq - 查询栈板上的所有物料明细(用于合托推送WCS) -->
<select id="getPalletAllDetails" resultType="com.gaotao.modules.automatedWarehouse.entity.PalletDetail"> <select id="getPalletAllDetails" resultType="com.gaotao.modules.automatedWarehouse.entity.PalletDetail">
SELECT
SELECT
pd.site, pd.site,
pd.pallet_id AS palletId, pd.pallet_id AS palletId,
pd.position, pd.position,

Loading…
Cancel
Save