| New file |
| | |
| | | $javaFiles = Get-ChildItem -Path "src/main/java" -Recurse -Filter "*.java" |
| | | $foundKeys = @() |
| | | foreach ($file in $javaFiles) { |
| | | $content = Get-Content $file.FullName |
| | | $matches = [regex]::Matches($content, 'response\.[a-zA-Z0-9_]+') |
| | | foreach ($match in $matches) { |
| | | $foundKeys += $match.Value |
| | | } |
| | | } |
| | | |
| | | # Manually add keys mentioned by user or known to be missing from grep |
| | | $manualKeys = @("response.mat_list", "response.menu_list", "response.mat_delete", "response.mat_update", "response.user_detail") |
| | | $foundKeys += $manualKeys |
| | | |
| | | $foundKeys = $foundKeys | Sort-Object | Get-Unique |
| | | |
| | | # Exclude technical calls |
| | | $exclude = @("response.getOutputStream", "response.setContentType", "response.setCharacterEncoding", "response.setHeader", "response.sendRedirect", "response.getWriter", "response.addCookie", "response.setStatus", "response.reset", "response.isSuccessful", "response.getStatus") |
| | | $foundKeys = $foundKeys | Where-Object { $exclude -notcontains $_ } |
| | | |
| | | $enPath = "src/main/webapp/static/i18n/en.json" |
| | | $cnPath = "src/main/webapp/static/i18n/zh-cn.json" |
| | | $mapPath = "scripts/mapping.json" |
| | | |
| | | $enContent = Get-Content $enPath -Raw -Encoding UTF8 |
| | | $cnContent = Get-Content $cnPath -Raw -Encoding UTF8 |
| | | $mapContent = Get-Content $mapPath -Raw -Encoding UTF8 | ConvertFrom-Json |
| | | |
| | | # Parse existing keys |
| | | $enKeys = [regex]::Matches($enContent, '"(response\.[^"]+)"') | ForEach-Object { $_.Groups[1].Value } |
| | | $cnKeys = [regex]::Matches($cnContent, '"(response\.[^"]+)"') | ForEach-Object { $_.Groups[1].Value } |
| | | |
| | | $missingEn = $foundKeys | Where-Object { $enKeys -notcontains $_ } |
| | | $missingCn = $foundKeys | Where-Object { $cnKeys -notcontains $_ } |
| | | |
| | | function Get-EnTrans($key) { |
| | | $parts = $key.Replace("response.", "").Split("_") |
| | | $text = $parts | ForEach-Object { $_.Substring(0,1).ToUpper() + $_.Substring(1) } |
| | | return $text -join " " |
| | | } |
| | | |
| | | function Get-CnTrans($key) { |
| | | $keyRaw = $key.Replace("response.", "") |
| | | $parts = $keyRaw.Split("_") |
| | | $trans = "" |
| | | foreach ($part in $parts) { |
| | | $found = $false |
| | | if ($mapContent -ne $null) { |
| | | # Robust property check |
| | | if ($mapContent.PSObject.Properties.Name -contains $part) { |
| | | $trans += $mapContent.$part |
| | | $found = $true |
| | | } |
| | | } |
| | | |
| | | if (-not $found) { |
| | | if ($part.Length -gt 0) { |
| | | $trans += $part.Substring(0,1).ToUpper() + $part.Substring(1) |
| | | } |
| | | } |
| | | } |
| | | return $trans |
| | | } |
| | | |
| | | # Add to EN |
| | | if ($missingEn.Count -gt 0) { |
| | | $newEntries = @() |
| | | foreach ($key in $missingEn) { |
| | | $val = Get-EnTrans $key |
| | | $newEntries += " `"$key`": `"$val`"" |
| | | } |
| | | $toAdd = "," + [Environment]::NewLine + ($newEntries -join "," + [Environment]::NewLine) |
| | | |
| | | $lastBraceIndex = $enContent.LastIndexOf("}") |
| | | if ($lastBraceIndex -ge 0) { |
| | | $enContent = $enContent.Substring(0, $lastBraceIndex) + $toAdd + [Environment]::NewLine + "}" |
| | | Set-Content -Path $enPath -Value $enContent -Encoding UTF8 |
| | | Write-Host "Added $($missingEn.Count) keys to en.json" |
| | | } |
| | | } else { |
| | | Write-Host "No missing keys in EN" |
| | | } |
| | | |
| | | # Add to CN |
| | | if ($missingCn.Count -gt 0) { |
| | | $newEntries = @() |
| | | foreach ($key in $missingCn) { |
| | | $val = Get-CnTrans $key |
| | | $newEntries += " `"$key`": `"$val`"" |
| | | } |
| | | $toAdd = "," + [Environment]::NewLine + ($newEntries -join "," + [Environment]::NewLine) |
| | | |
| | | $lastBraceIndex = $cnContent.LastIndexOf("}") |
| | | if ($lastBraceIndex -ge 0) { |
| | | $cnContent = $cnContent.Substring(0, $lastBraceIndex) + $toAdd + [Environment]::NewLine + "}" |
| | | Set-Content -Path $cnPath -Value $cnContent -Encoding UTF8 |
| | | Write-Host "Added $($missingCn.Count) keys to zh-cn.json" |
| | | } |
| | | } else { |
| | | Write-Host "No missing keys in CN" |
| | | } |
| New file |
| | |
| | | $javaFiles = Get-ChildItem -Path "src/main/java" -Recurse -Filter "*.java" |
| | | $foundKeys = @() |
| | | foreach ($file in $javaFiles) { |
| | | $content = Get-Content $file.FullName |
| | | $matches = [regex]::Matches($content, 'response\.[a-zA-Z0-9_]+') |
| | | foreach ($match in $matches) { |
| | | $foundKeys += $match.Value |
| | | } |
| | | } |
| | | $foundKeys = $foundKeys | Sort-Object | Get-Unique |
| | | |
| | | # Exclude technical calls like response.getOutputStream, response.setContentType, etc. |
| | | $exclude = @("response.getOutputStream", "response.setContentType", "response.setCharacterEncoding", "response.setHeader", "response.sendRedirect", "response.getWriter", "response.addCookie", "response.setStatus", "response.reset") |
| | | $foundKeys = $foundKeys | Where-Object { $exclude -notcontains $_ } |
| | | |
| | | $enContent = Get-Content "src/main/webapp/static/i18n/en.json" -Raw |
| | | $enKeys = [regex]::Matches($enContent, '"(response\.[^"]+)"') | ForEach-Object { $_.Groups[1].Value } |
| | | |
| | | $cnContent = Get-Content "src/main/webapp/static/i18n/zh-cn.json" -Raw |
| | | $cnKeys = [regex]::Matches($cnContent, '"(response\.[^"]+)"') | ForEach-Object { $_.Groups[1].Value } |
| | | |
| | | $missingEn = $foundKeys | Where-Object { $enKeys -notcontains $_ } |
| | | $missingCn = $foundKeys | Where-Object { $cnKeys -notcontains $_ } |
| | | |
| | | Write-Output "Missing in EN:" |
| | | $missingEn |
| | | Write-Output "Missing in CN:" |
| | | $missingCn |
| New file |
| | |
| | | { |
| | | "add": "新增", "delete": "删除", "update": "修改", "edit": "编辑", |
| | | "list": "列表", "export": "导出", "detail": "详情", "query": "查询", |
| | | "import": "导入", "success": "成功", "failed": "失败", "error": "错误", |
| | | "mat": "物料", "user": "用户", "role": "角色", "menu": "菜单", |
| | | "dept": "部门", "area": "库区", "loc": "库位", "node": "货位", |
| | | "order": "单据", "task": "任务", "work": "作业", "log": "日志", |
| | | "station": "站台", "zone": "库区", "warehouse": "仓库", "whs": "仓库", |
| | | "stock": "库存", "inbound": "入库", "outbound": "出库", "print": "打印", |
| | | "check": "盘点", "audit": "审核", "cancel": "取消", "close": "关闭", |
| | | "enable": "启用", "disable": "禁用", "pda": "PDA", "search": "搜索", |
| | | "find": "查找", "count": "数量", "param": "参数", "exists": "已存在", |
| | | "empty": "为空", "required": "必填", "permission": "权限", "auth": "认证", |
| | | "login": "登录", "logout": "登出", "password": "密码", "reset": "重置", |
| | | "group": "组", "type": "类型", "status": "状态", "history": "历史", |
| | | "config": "配置", "system": "系统", "data": "数据", "file": "文件", |
| | | "download": "下载", "upload": "上传", "template": "模板", "preview": "预览", |
| | | "start": "启动", "stop": "停止", "pause": "暂停", "resume": "恢复", |
| | | "finish": "完成", "submit": "提交", "reject": "拒绝", "approve": "通过", |
| | | "batch": "批量", "all": "全部", "info": "信息", "msg": "消息", |
| | | "code": "编码", "name": "名称", "desc": "描述", "memo": "备注", |
| | | "tree": "树", "chart": "图表", "report": "报表", "home": "首页", |
| | | "main": "主", "sub": "子", "parent": "父", "child": "子", |
| | | "init": "初始化", "sync": "同步", "refresh": "刷新", "load": "加载", |
| | | "save": "保存", "create": "创建", "remove": "移除", "clear": "清空", |
| | | "select": "选择", "confirm": "确认", "cancel": "取消", "ok": "确定", |
| | | "yes": "是", "no": "否", "true": "真", "false": "假", |
| | | "wrk": "作业", "mast": "主档", "detl": "明细", "execute": "执行", |
| | | "lastno": "流水号", "stk": "库存", "plcm": "位置", "crn": "堆垛机", |
| | | "devp": "设备", "dev": "设备", "err": "异常", "opt": "操作", |
| | | "plc": "PLC", "wcs": "WCS", "wms": "WMS", "mes": "MES", |
| | | "sap": "SAP", "erp": "ERP", "agv": "AGV", "rgv": "RGV", |
| | | "led": "LED", "rfid": "RFID", "barcode": "条码", "qrcode": "二维码", |
| | | "label": "标签", "print": "打印", "scan": "扫描", "read": "读取", |
| | | "write": "写入", "open": "打开", "close": "关闭", "connect": "连接", |
| | | "disconnect": "断开", "send": "发送", "receive": "接收", "request": "请求" |
| | | } |
| New file |
| | |
| | | |
| | | # Set encoding to UTF8 |
| | | $OutputEncoding = [System.Text.Encoding]::UTF8 |
| | | |
| | | # Paths |
| | | $root = "f:\workFile\2026.1.12yuedan\zy-asrs" |
| | | $enPath = "$root\src\main\webapp\static\i18n\en.json" |
| | | $cnPath = "$root\src\main\webapp\static\i18n\zh-cn.json" |
| | | $mapPath = "$root\scripts\mapping.json" |
| | | $javaPath = "$root\src\main\java" |
| | | |
| | | # 1. Load Mapping |
| | | if (Test-Path $mapPath) { |
| | | $mapContent = Get-Content $mapPath -Raw -Encoding UTF8 | ConvertFrom-Json |
| | | } else { |
| | | Write-Host "Mapping file not found!" |
| | | $mapContent = $null |
| | | } |
| | | |
| | | # 2. Scan Java Files for keys |
| | | Write-Host "Scanning Java files..." |
| | | $javaFiles = Get-ChildItem -Path $javaPath -Recurse -Filter "*.java" |
| | | $foundKeys = @() |
| | | foreach ($file in $javaFiles) { |
| | | $content = Get-Content $file.FullName |
| | | # Regex to capture response.xxx |
| | | # Matches response. followed by letters, numbers, underscores, dots |
| | | $matches = [regex]::Matches($content, 'response\.[a-zA-Z0-9_]+') |
| | | foreach ($match in $matches) { |
| | | $foundKeys += $match.Value |
| | | } |
| | | } |
| | | |
| | | # Manual keys mentioned by user |
| | | $manualKeys = @("response.mat_list", "response.menu_list", "response.mat_delete", "response.mat_update", "response.user_detail") |
| | | $foundKeys += $manualKeys |
| | | |
| | | # Unique and Sort |
| | | $foundKeys = $foundKeys | Sort-Object | Get-Unique |
| | | |
| | | # Exclude technical calls (heuristic) |
| | | $exclude = @("response.getOutputStream", "response.setContentType", "response.setCharacterEncoding", "response.setHeader", "response.sendRedirect", "response.getWriter", "response.addCookie", "response.setStatus", "response.reset", "response.isSuccessful", "response.getStatus", "response.put") |
| | | $foundKeys = $foundKeys | Where-Object { $exclude -notcontains $_ } |
| | | |
| | | Write-Host "Found $($foundKeys.Count) unique 'response.*' keys." |
| | | |
| | | # Helper Functions |
| | | function Get-EnTrans($key) { |
| | | $parts = $key.Replace("response.", "").Split("_") |
| | | $text = $parts | ForEach-Object { $_.Substring(0,1).ToUpper() + $_.Substring(1) } |
| | | return $text -join " " |
| | | } |
| | | |
| | | function Get-CnTrans($key) { |
| | | $keyRaw = $key.Replace("response.", "") |
| | | $parts = $keyRaw.Split("_") |
| | | $trans = "" |
| | | foreach ($part in $parts) { |
| | | $found = $false |
| | | if ($mapContent -ne $null) { |
| | | if ($mapContent.PSObject.Properties.Name -contains $part) { |
| | | $trans += $mapContent.$part |
| | | $found = $true |
| | | } |
| | | } |
| | | |
| | | if (-not $found) { |
| | | if ($part.Length -gt 0) { |
| | | # Fallback: capitalize |
| | | # Or maybe leave as English if no mapping? |
| | | # User wants Chinese, but better English than nothing. |
| | | # But we try to map. |
| | | # If valid mapping is missing, we might want to flag it? |
| | | # For now, just Capitalize |
| | | $trans += $part.Substring(0,1).ToUpper() + $part.Substring(1) |
| | | } |
| | | } |
| | | } |
| | | return $trans |
| | | } |
| | | |
| | | function Process-JsonFile($path, $lang) { |
| | | Write-Host "Processing $path ..." |
| | | $jsonContent = Get-Content $path -Raw -Encoding UTF8 | ConvertFrom-Json |
| | | |
| | | # Convert to hashtable for easier manipulation if possible, |
| | | # but ConvertFrom-Json returns PSCustomObject. |
| | | # We will build a new Ordered Dictionary to store results. |
| | | |
| | | $newDict = [Ordered]@{} |
| | | |
| | | # Copy existing keys |
| | | foreach ($prop in $jsonContent.PSObject.Properties) { |
| | | $newDict[$prop.Name] = $prop.Value |
| | | } |
| | | |
| | | # Update/Add keys |
| | | $addedCount = 0 |
| | | $updatedCount = 0 |
| | | |
| | | foreach ($key in $foundKeys) { |
| | | $val = "" |
| | | if ($lang -eq "en") { |
| | | $val = Get-EnTrans $key |
| | | } else { |
| | | $val = Get-CnTrans $key |
| | | } |
| | | |
| | | if ($newDict.Contains($key)) { |
| | | # Check if empty |
| | | if ([string]::IsNullOrEmpty($newDict[$key])) { |
| | | $newDict[$key] = $val |
| | | $updatedCount++ |
| | | Write-Host " Updated empty key: $key -> $val" |
| | | } |
| | | } else { |
| | | # Add new |
| | | $newDict[$key] = $val |
| | | $addedCount++ |
| | | Write-Host " Added new key: $key -> $val" |
| | | } |
| | | } |
| | | |
| | | Write-Host " Added: $addedCount, Updated: $updatedCount" |
| | | |
| | | # Sort keys |
| | | $sortedDict = [Ordered]@{} |
| | | $keys = $newDict.Keys | Sort-Object |
| | | foreach ($k in $keys) { |
| | | $sortedDict[$k] = $newDict[$k] |
| | | } |
| | | |
| | | # Convert back to JSON |
| | | $jsonOutput = $sortedDict | ConvertTo-Json -Depth 100 |
| | | |
| | | # Unescape Unicode |
| | | $jsonOutput = [regex]::Replace($jsonOutput, "\\u([0-9a-fA-F]{4})", { param($m) [char][int]::Parse($m.Groups[1].Value, [System.Globalization.NumberStyles]::HexNumber) }) |
| | | |
| | | # Save |
| | | $jsonOutput | Set-Content -Path $path -Encoding UTF8 |
| | | } |
| | | |
| | | Process-JsonFile $enPath "en" |
| | | Process-JsonFile $cnPath "cn" |
| | | |
| | | Write-Host "Done." |
| | |
| | | return R.ok("response.comb_success"); |
| | | } |
| | | |
| | | @RequestMapping("/cartonScanReplace/auth") |
| | | @ManagerAuth(memo = "response.carton_scan") |
| | | public R cartonScanReplace(@RequestBody ScanParam scanParam){ |
| | | List<WrkDetl> wrkDetls = wrkDetlService.selectList(new EntityWrapper<WrkDetl>().eq("barcode",scanParam.getCartonLabel())); |
| | | if (wrkDetls.isEmpty()) { |
| | | return R.error("response.no_data"); |
| | | } |
| | | WrkDetl wrkDetl = wrkDetls.get(0); |
| | | return R.ok("response.scan_success").add(wrkDetl); |
| | | |
| | | } |
| | | @RequestMapping("/labelReplace/auth") |
| | | @ManagerAuth(memo = "response.carton_scan_save") |
| | | public R cartonScanReplaceSave(@RequestBody ReplaceBarcodeParam replaceBarcodeParam) { |
| | | if (replaceBarcodeParam == null || Cools.isEmpty(replaceBarcodeParam.getReplaceParam())) { |
| | | return R.error("PARAM IS NULL"); |
| | | } |
| | | for (ReplaceBarcodeParam.CombinedData param : replaceBarcodeParam.getReplaceParam()) { |
| | | WrkDetl wrkDetl = wrkDetlService.selectOne( |
| | | new EntityWrapper<WrkDetl>() |
| | | .eq("order_no", param.getOrderNo()) |
| | | .eq("barcode", param.getBarcode()) |
| | | ); |
| | | if (wrkDetl == null) { |
| | | return R.error("DETL IS NULL, barcode=" + param.getBarcode()); |
| | | } |
| | | if (!wrkDetlService.updateBuyerLabel(param.getOrderNo(), param.getBuyerLabelBarcode(),param.getBarcode())) { |
| | | return R.error("Failed to update, barcode=" + param.getBarcode()); |
| | | } |
| | | } |
| | | return R.ok("response.replace_success"); |
| | | } |
| | | |
| | | |
| | | @RequestMapping("/cartonScan/auth") |
| | | @ManagerAuth(memo = "response.carton_scan") |
| | | public R cartonScan(@RequestBody ScanParam scanParam){ |
| New file |
| | |
| | | package com.zy.asrs.entity.param; |
| | | |
| | | import com.zy.common.model.LocDto; |
| | | import lombok.Data; |
| | | |
| | | import java.util.List; |
| | | |
| | | @Data |
| | | public class ReplaceBarcodeParam { |
| | | |
| | | private List<CombinedData> replaceParam; |
| | | |
| | | @Data |
| | | public static class CombinedData { |
| | | private String barcode; // 内部箱条码 |
| | | private Double qty; |
| | | private Double ctn; |
| | | private String orderNo; |
| | | private String buyerLabelBarcode; // 客户标签 |
| | | } |
| | | } |
| | | |
| | |
| | | |
| | | List<WrkDetl> selectAndLogByOrderNo(String orderNo); |
| | | |
| | | int updateBuyerLabel(@Param("orderNo")String orderNo, @Param("buyerLabel")String buyerLabel,@Param("barcode")String barcode); |
| | | int updateInspect( @Param("wrkNo")Integer wrkNo, @Param("matnr")String matnr, @Param("batch")String batch); |
| | | |
| | | List<WrkDetl> selectPakoutQuery(@Param("staNo")Integer staNo, @Param("matnr")String matnr); |
| | |
| | | boolean updateAnfme(Double anfme, Integer wrkNo, String matnr, String batch); |
| | | boolean updateAnfme(Double anfme, Integer wrkNo, String matnr, String batch,String barcode); |
| | | |
| | | boolean updateBuyerLabel(String orderNo,String buyerLabel,String barcode); |
| | | |
| | | List<WrkDetl> selectAndLogByOrderNo(String orderNo); |
| | | List<WrkDetl> findByBarcode(String barcode); |
| | |
| | | import com.zy.asrs.service.MatService; |
| | | import com.zy.asrs.service.WrkDetlService; |
| | | import com.zy.common.model.DetlDto; |
| | | import com.zy.common.utils.HttpHandler; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | |
| | | return baseMapper.updateAnfme(anfme, wrkNo, matnr, batch,barcode) > 0; |
| | | } |
| | | } |
| | | @Override |
| | | public boolean updateBuyerLabel(String orderNo,String buyerLabel,String barcode){ |
| | | return this.baseMapper.updateBuyerLabel(orderNo, buyerLabel,barcode) > 0; |
| | | } |
| | | |
| | | @Override |
| | | public List<WrkDetl> selectAndLogByOrderNo(String orderNo) { |
| | |
| | | and matnr = #{matnr} |
| | | <include refid="batchSeq"></include> |
| | | </update> |
| | | <update id="updateBuyerLabel"> |
| | | update asr_wrk_detl |
| | | set memo = #{buyerLabel} |
| | | where order_no = #{orderNo} |
| | | and barcode = #{barcode} |
| | | </update> |
| | | |
| | | <select id="selectAndLogByOrderNo" resultMap="BaseResultMap"> |
| | | select * from asr_wrk_detl where order_no = #{orderNo} |
| | |
| | | "response.code_or_name_exists": "Code or name already exists", |
| | | "response.comb_success": "Comb Success", |
| | | "response.scan_success": "Scan Success", |
| | | "response.replace_success": "Replace Success", |
| | | "response.confirm_complete": "Confirm Complete", |
| | | "response.confirm_picking_outbound_failed": "Confirm Picking Outbound Failed", |
| | | "response.crane_add": "Crane Add", |
| New file |
| | |
| | | { |
| | | "status_desc": "Status Description", |
| | | "wrk_status_0": "0.Pending Receive", |
| | | "wrk_status_1": "1.Received", |
| | | "wrk_status_2": "2.Task Started", |
| | | "wrk_status_3": "3.Pickup Completed", |
| | | "wrk_status_4": "4.Inbound Completed", |
| | | "wrk_status_5": "5.Inventory Updated", |
| | | "wrk_status_6": "6.Task Interrupted", |
| | | "wrk_status_7": "7.Drop-off Completed", |
| | | "wrk_status_11": "11.Outbound ID Generated", |
| | | "wrk_status_12": "12.Crane Outbound In Progress", |
| | | "wrk_status_13": "13.Crane Empty Outbound Error", |
| | | "wrk_status_14": "14.Outbound Unconfirmed", |
| | | "wrk_status_15": "15.Outbound Update Completed", |
| | | "display_mode": "Display Mode", |
| | | "view_by_row": "View by Row", |
| | | "view_by_layer": "View by Layer", |
| | | "enable_selection": "Enable Selection", |
| | | "disable_selection": "Disable Selection", |
| | | "assign_zone": "Assign Zone", |
| | | "zone_legend": "Zone Legend", |
| | | "selection_mode_tip": "Selection mode enabled, please drag to select on the location map", |
| | | "please_select_zone": "Please select a zone", |
| | | "zone_color": "Zone Color", |
| | | "assign_zone_and_color": "Assign Zone and Color", |
| | | "confirm": "Confirm", |
| | | "cancel": "Cancel", |
| | | "cancel_selection": "Cancel Selection", |
| | | "assign_success": "Assignment successful", |
| | | "operation_failed": "Operation failed", |
| | | "fetch_zone_list_failed": "Failed to fetch zone list", |
| | | "modify_zone_color": "Modify Zone Color", |
| | | "zone_name": "Zone Name", |
| | | "select_color": "Select Color", |
| | | "save": "Save", |
| | | "color_updated": "Color updated", |
| | | "update_failed": "Update failed", |
| | | "load_failed": "Load failed", |
| | | "language": "Language", |
| | | "license_validity_prefix": "Temporary license valid for: ", |
| | | "license_validity_suffix": " days", |
| | | "basic_info": "Basic Information", |
| | | "logout": "Log Out", |
| | | "home": "Home", |
| | | "_comment_home": "Home Tab Bar", |
| | | "主页": "Home", |
| | | "控制台": "Dashboard", |
| | | "分析页": "Analytics", |
| | | "库位热点图": "Location Heatmap", |
| | | "基础数据": "Master Data", |
| | | "商品档案": "Item Master", |
| | | "工作状态": "Task Status", |
| | | "入出库类型": "Transaction Types", |
| | | "库位状态": "Location Status", |
| | | "库位类型管理": "LocType Management", |
| | | "工作序号查询": "Task Number Query", |
| | | "库位排号分配": "Location Slot Query", |
| | | "归类管理": "Category Management", |
| | | "库区管理": "Zone Management", |
| | | "路径站点设置": "Path & Station Setup", |
| | | "库存管理": "Inventory Management", |
| | | "库位查询": "Location Inquiry", |
| | | "库存明细管理": "Inventory Detail", |
| | | "库存调整": "Inventory Adjustment", |
| | | "库存明细统计": "Inventory Summary", |
| | | "入出库作业": "Out & In Operations", |
| | | "入库作业": "Inbound Operations", |
| | | "出库作业": "Outbound Operations", |
| | | "盘点出库": "Cycle Count Outbound", |
| | | "库位移转": "Location Transfer", |
| | | "空板出库": "Empty Pallet Outbound", |
| | | "工作档管理": "Work Orders", |
| | | "工作档查询维护": "Work Order Query", |
| | | "工作档明细查询": "Work Order Details", |
| | | "工作历史档查询": "Work Order History", |
| | | "工作明细历史档查询": "Work Order Detail History", |
| | | "work_order_detail_history": "Work Order Detail History", |
| | | "入库通知档": "Inbound Notice", |
| | | "入库通知历史档": "Inbound Notice History", |
| | | "订单系统": "Order System", |
| | | "单据管理": "Order Management", |
| | | "订单出库": "Order Outbound", |
| | | "订单状态": "Order Status", |
| | | "单据类型": "Order Types", |
| | | "设备维护": "Equipment Maintenance", |
| | | "库位管理": "Location Management", |
| | | "站点管理": "Station Management", |
| | | "日志统计": "Logs & Stats", |
| | | "库存调整记录": "Inventory Adjustments", |
| | | "三方接口统计": "3rd-Party API Logs", |
| | | "异常工作档": "Exception Work Orders", |
| | | "库位使用率统计": "Location Utilization", |
| | | "库存在库时间统计": "Inventory Age", |
| | | "日入出库次数统计": "Daily Transactions", |
| | | "日入库明细查询": "Inbound Details", |
| | | "日出库明细查询": "Outbound Details", |
| | | "工作档维护日志": "Work Maintenance Log", |
| | | "开发专用": "Developer Tools", |
| | | "菜单列表": "Menu List", |
| | | "权限控制": "Permission Control", |
| | | "接口文档": "API Documentation", |
| | | "凭证记录": "Credential Records", |
| | | "系统配置": "System Configuration", |
| | | "系统管理": "System Management", |
| | | "系统用户": "System Users", |
| | | "角色管理": "Role Management", |
| | | "操作日志": "Operation Log", |
| | | "个人设置": "Personal Settings", |
| | | "基本资料": "Basic Information", |
| | | "可视化": "Visualization", |
| | | "侧边伸缩": "Toggle Side", |
| | | "刷新": "Refresh", |
| | | "全屏": "Full Screen", |
| | | "主题": "Theme", |
| | | "关闭当前": "Close Current", |
| | | "关闭其他": "Close Others", |
| | | "关闭所有": "Close All", |
| | | "关闭当前标签页": "Close Current Tab", |
| | | "关闭其他标签页": "Close Other Tabs", |
| | | "关闭所有标签页": "Close All Tabs", |
| | | "主页不能关闭": "Home page cannot be closed", |
| | | "首页": "Home Page", |
| | | "库存滞留时间统计表": "Stock Retention Time Statistics", |
| | | "库位使用比例": "Location Usage Ratio", |
| | | "库位占比": "Location Percentage", |
| | | "日入出库数量": "Daily In/Out Quantity", |
| | | "入_出库数量": "In/Out Quantity", |
| | | "仓储管理系统": "WMS", |
| | | "请选择您要使用的模块": "Please select the module you want to use", |
| | | "运行任务": "Running Tasks", |
| | | "库存明细": "Inventory Details", |
| | | "_comment_common": "Common Table Columns", |
| | | "商品编号_品号": "Item No.", |
| | | "商品名称_品名": "Item Name", |
| | | "规格": "Spec", |
| | | "代码": "Code", |
| | | "颜色": "Color", |
| | | "品牌": "Brand", |
| | | "单位": "Unit", |
| | | "单价": "Price", |
| | | "sku": "SKU", |
| | | "单位量": "Unit Qty", |
| | | "条码": "Barcode", |
| | | "产地": "Origin", |
| | | "厂家": "Manufacturer", |
| | | "生产日期": "Mfg Date", |
| | | "品项数": "Item Count", |
| | | "安全库存量": "Safety Stock", |
| | | "单箱净重": "Net Weight/Box", |
| | | "单箱毛重": "Gross Weight/Box", |
| | | "单箱体积": "Volume/Box", |
| | | "箱子尺寸": "Box Size", |
| | | "供应商": "Supplier", |
| | | "供应商编码": "Supplier Code", |
| | | "是否批次": "Batch Managed", |
| | | "保质期": "Shelf Life", |
| | | "预警天数": "Warning Days", |
| | | "制购": "Make/Buy", |
| | | "要求检验": "Inspection Reqd", |
| | | "危险品": "Hazardous", |
| | | "修改人员": "Updated By", |
| | | "修改时间": "Updated Time", |
| | | "备注": "Remark", |
| | | "单据编号": "Order No.", |
| | | "批号": "Batch No.", |
| | | "数量": "Quantity", |
| | | "托盘条码": "Pallet Barcode", |
| | | "入库时间": "Inbound Time", |
| | | "滞留天数": "Retention Days", |
| | | "库位号": "Location No.", |
| | | "托盘码": "Pallet Code", |
| | | "商品编号": "Item No.", |
| | | "商品名称": "Item Name", |
| | | "请输入": "Please enter", |
| | | "搜索": "Search", |
| | | "重置": "Reset", |
| | | "导出": "Export", |
| | | "详情": "Detail", |
| | | "库龄_天": "Age(Days)", |
| | | "no_data": "No Data", |
| | | "start_end_time": "Start / End Time", |
| | | "add": "Add", |
| | | "delete": "Delete", |
| | | "edit": "Edit", |
| | | "data_status": "Data Status", |
| | | "normal": "Normal", |
| | | "status_disabled": "Disabled", |
| | | "locked": "Locked", |
| | | "io_status": "Transaction Status", |
| | | "inbound": "Inbound", |
| | | "pending_inbound": "Pending Inbound", |
| | | "confirm_generate_task": "Confirm Task Generation", |
| | | "select_one_data": "Select One Record", |
| | | "confirm_delete_data": "Confirm Delete Record", |
| | | "confirm_delete_prefix": "Are you sure to delete ", |
| | | "confirm_delete_suffix": " record(s)?", |
| | | "this": "this", |
| | | "account": "Account", |
| | | "username": "Username", |
| | | "password": "Password", |
| | | "role": "Role", |
| | | "age_days": "Inventory Age(Days)", |
| | | "product_name": "Item Name", |
| | | "order_no": "Order No.", |
| | | "batch_no": "Batch No.", |
| | | "unit_qty": "Unit Qty", |
| | | "spec": "Spec", |
| | | "code": "Code", |
| | | "color": "Color", |
| | | "brand": "Brand", |
| | | "origin": "Origin", |
| | | "manufacturer": "Manufacturer", |
| | | "mfg_date": "Mfg Date", |
| | | "item_count": "Item Count", |
| | | "safety_stock": "Safety Stock", |
| | | "net_weight_box": "Net Weight/Box", |
| | | "gross_weight_box": "Gross Weight/Box", |
| | | "volume_box": "Volume/Box", |
| | | "box_size": "Box Size", |
| | | "supplier": "Supplier", |
| | | "supplier_code": "Supplier Code", |
| | | "batch_managed": "Batch Managed", |
| | | "shelf_life": "Shelf Life", |
| | | "warning_days": "Warning Days", |
| | | "make_buy": "Make/Buy", |
| | | "inspection_reqd": "Inspection Reqd", |
| | | "hazardous": "Hazardous", |
| | | "confirm_export_excel": "Confirm Export to Excel", |
| | | "no_data_found": "No Data Found", |
| | | "creator_detail": "Creator Details", |
| | | "modifier_detail": "Modifier Details", |
| | | "please_select_data": "please select data", |
| | | "pallet_barcode": "Pallet Code", |
| | | "product_code": "Item No.", |
| | | "location_no": "Location No.", |
| | | "search": "search", |
| | | "reset": "reset", |
| | | "export": "export", |
| | | "exporting": "Exporting...", |
| | | "detail": "Detail", |
| | | "modifier": "Modifier", |
| | | "modify_time": "Modify Time", |
| | | "prompt": "Prompt", |
| | | "info": "Info", |
| | | "id": "ID", |
| | | "material": "Material", |
| | | "material_desc": "Material Desc", |
| | | "status": "Status", |
| | | "remark": "Remark", |
| | | "add_time": "Add Time", |
| | | "creator": "Creator", |
| | | "close": "Close", |
| | | "modify": "Modify", |
| | | "warm_prompt_prefix": "Warm Prompt: Please fill in the information carefully, ", |
| | | "warm_prompt_suffix": "is mandatory.", |
| | | "total_prefix": "Total ", |
| | | "total_suffix": " items", |
| | | "jump_to": "Go to ", |
| | | "page": " page", |
| | | "items_per_page": " items/page", |
| | | "running": "Running", |
| | | "pending": "Pending", |
| | | "inbound_notice_no": "Inbound Notice No", |
| | | "input_placeholder": "Please input...", |
| | | "work_time": "Work Time", |
| | | "barcode": "Barcode", |
| | | "work_no": "Work No", |
| | | "work_status": "Work Status", |
| | | "crane_no": "Crane No", |
| | | "crane": "Crane", |
| | | "increase_priority": "Increase Priority", |
| | | "decrease_priority": "Decrease Priority", |
| | | "pre_existing": "Pre-Existing", |
| | | "empty_op": "Empty Op", |
| | | "pick": "Pick", |
| | | "count": "Count", |
| | | "complete": "Complete", |
| | | "cancel": "Cancel", |
| | | "transaction_type": "Transaction Type", |
| | | "priority": "Priority", |
| | | "source_station": "Source Station", |
| | | "target_station": "Target Station", |
| | | "source_location": "Source Location", |
| | | "target_location": "Target Location", |
| | | "picking": "Picking", |
| | | "exit": "Exit", |
| | | "warehouse_no": "Warehouse No", |
| | | "transfer_req_no": "Transfer Req No", |
| | | "item_no": "Item No", |
| | | "material_label_id": "Material Label ID", |
| | | "factory": "Factory", |
| | | "quantity": "Quantity", |
| | | "unit": "Unit", |
| | | "user_id": "User ID", |
| | | "empty_pallet": "Empty Pallet", |
| | | "work_time": "Work Time", |
| | | "crane_start_time": "Crane Start Time", |
| | | "crane_end_time": "Crane End Time", |
| | | "picking_time": "Picking Time", |
| | | "full_pallet": "Full Pallet", |
| | | "operation": "Operation", |
| | | "current_workflow_detail": "Material details for current workflow", |
| | | "confirm_cancel_work_order": "Confirm cancel this work order?", |
| | | "confirm_complete_work_order": "Confirm complete this work order?", |
| | | "confirm_pick_work_order": "Pick inbound this work order?", |
| | | "confirm_pre_existing_exception": "Pre-existing exception occurred. To re-inbound, ensure cargo is at crane outbound station!", |
| | | "confirm_cancel_erp_order": "Current task linked to ERP sales order. Cancellation will regenerate outbound task. Continue?", |
| | | "confirm_export": "Confirm export to Excel?", |
| | | "confirm_empty_op_exception": "Empty operation exception! Continue?", |
| | | "work_order_detail": "Work Order Detail", |
| | | "location_type": "Location Type", |
| | | "row": "Row", |
| | | "bay": "Bay", |
| | | "level": "Level", |
| | | "group": "Group", |
| | | "init": "Init", |
| | | "please_enter_password_reset_location": "Please enter password to reset location", |
| | | "init_location": "Initialize Location", |
| | | "password_error": "Password Error", |
| | | "location_detail": "Location Detail", |
| | | "modify_detail": "Modification Detail", |
| | | "create_detail": "Creation Detail", |
| | | "high_low_type": "High/Low Type", |
| | | "width_type": "Width Type", |
| | | "weight_type": "Weight Type", |
| | | "delete_location": "Delete Location", |
| | | "delete_keep": "Delete|Keep", |
| | | "start_end_row": "Start/End Row", |
| | | "start_end_bay": "Start/End Bay", |
| | | "start_end_level": "Start/End Level", |
| | | "crane_amount": "Crane Amount", |
| | | "start_crane": "Start Crane", |
| | | "low_location": "Low Location", |
| | | "high_location": "High Location", |
| | | "middle_location": "Middle Location", |
| | | "narrow_location": "Narrow Location", |
| | | "wide_location": "Wide Location", |
| | | "light_location": "Light Location", |
| | | "heavy_location": "Heavy Location", |
| | | "unknown": "Unknown", |
| | | "standard_crane_whs": "Standard Crane Whs", |
| | | "flat_whs": "Flat Whs", |
| | | "shuttle_board": "Shuttle Board", |
| | | "four_way_vehicle": "Four-way Vehicle", |
| | | "agv": "AGV", |
| | | "warm_prompt_clear_inventory": "Warm Prompt: Clearing inventory when modifying to empty location", |
| | | "禁用库位": "Disabled Location", |
| | | "在库库位": "Occupied Location", |
| | | "空库位": "Empty Location", |
| | | "使用库位": "Used Location", |
| | | "入库数量": "Inbound Quantity", |
| | | "出库数量": "Outbound Quantity", |
| | | "classification": "Type", |
| | | "stock_upper_limit": "Stock Max", |
| | | "stock_lower_limit": "Stock Min", |
| | | "stock_age_upper_limit_days": "Max Stock Age (Days)", |
| | | "area": "Area", |
| | | "please_select_print_data": "Please select data to print", |
| | | "batch_print_count": "Batch Print [Count: {{count}}]", |
| | | "category_cannot_be_empty": "Category cannot be empty", |
| | | "confirm_sync_file": "Confirm sync file [{{filename}}]?", |
| | | "template_1": "Template 1", |
| | | "template_2": "Template 2", |
| | | "template_3": "Template 3", |
| | | "print_preview": "Print Preview", |
| | | "please_input_item_no": "Enter Item No.", |
| | | "please_input_item_name": "Enter Item Name", |
| | | "please_input_item_spec": "Enter Item Spec", |
| | | "batch_print": "Batch Print", |
| | | "print": "Print", |
| | | "select_template": "Select Template", |
| | | "item": "Item", |
| | | "item_code": "Item Code", |
| | | "item_name": "Item Name", |
| | | "item_spec": "Item Spec", |
| | | "data_sync": "Sync Data", |
| | | "io_type_code": "Transaction Type Code", |
| | | "io_type_desc": "Transaction Type Description", |
| | | "io_type_1": "1.Inbound", |
| | | "io_type_3": "3.Station to Station", |
| | | "io_type_6": "6.Exit on Device", |
| | | "io_type_10": "10.Empty Pallet Inbound", |
| | | "io_type_11": "11.Bin Transfer", |
| | | "io_type_53": "53.Picking Re-inbound", |
| | | "io_type_54": "54.Merge Re-inbound", |
| | | "io_type_57": "57.Cycle Count Re-inbound", |
| | | "io_type_101": "101.Outbound", |
| | | "io_type_103": "103.Picking Outbound", |
| | | "io_type_104": "104.Merge Outbound", |
| | | "io_type_107": "107.Cycle Count Outbound", |
| | | "io_type_110": "110.Empty Pallet Outbound", |
| | | "loc_status_code": "Location Status Code", |
| | | "loc_status_desc": "Location Status Description", |
| | | "location_status": "Location Status", |
| | | "loc_status_D": "D.Empty Bin/Pallet", |
| | | "loc_status_F": "F.In Stock", |
| | | "loc_status_G": "G.Aisle", |
| | | "loc_status_O": "O.Empty Location", |
| | | "loc_status_P": "P.Picking/Counting/Merging Outbound", |
| | | "loc_status_Q": "Q.Picking/Counting/Merging Re-inbound", |
| | | "loc_status_R": "R.Outbound Reserved", |
| | | "loc_status_S": "S.Inbound Reserved", |
| | | "loc_status_X": "X.Disabled", |
| | | "loc_status_Y": "Y.Merged", |
| | | "parent_menu": "Parent Menu", |
| | | "category": "Category", |
| | | "please_input_net_weight_box": "Please input net weight/box", |
| | | "please_input_gross_weight_box": "Please input gross weight/box", |
| | | "please_input_remark": "Please input remark", |
| | | "please_select_type": "Please Select Type", |
| | | "other": "Other", |
| | | "responsible_person": "Owner", |
| | | "please_enter_responsible_person": "Please enter Owner", |
| | | "classification_name": "Category Name", |
| | | "please_enter_classification_name": "Please enter Category Name", |
| | | "sort": "Sort", |
| | | "please_enter_sort": "Please enter sort", |
| | | "memo": "Memo", |
| | | "please_enter_memo": "Please enter memo", |
| | | "type": "Type", |
| | | "name": "Name", |
| | | "image": "Image", |
| | | "confirm_delete_selected_data": "Are you sure you want to delete the selected data?", |
| | | "extract_item": "Extract Item", |
| | | "extract_inventory": "Extract Inventory", |
| | | "check_station": "Check Station:", |
| | | "please_select_station": "Please select station", |
| | | "check_outbound": "Check Outbound", |
| | | "please_add_check_inventory_first": "Please add check inventory first", |
| | | "requesting": "Requesting...", |
| | | "inbound_station": "Inbound Station:", |
| | | "please_select_station": "Please Select Station", |
| | | "start_inbound": "Start Inbound", |
| | | "remove": "Remove", |
| | | "quantity_required": "Quantity (Required)", |
| | | "batch_optional": "Batch (Optional)", |
| | | "operation": "Operation", |
| | | "please_enter_number": "Please enter a number", |
| | | "quantity_must_be_greater_than_zero": "Quantity must be greater than zero", |
| | | "please_extract_item_first": "Please extract item first", |
| | | "please_select_inbound_station": "Please select inbound station", |
| | | "inbound_started_success_target_loc": "Inbound started successfully, target location: ", |
| | | "requesting": "Requesting...", |
| | | "select_item": "Select Item", |
| | | "search_bar": "Search Bar", |
| | | "confirm_extract": "Extract", |
| | | "please_input_search_condition": "Please input search condition", |
| | | "empty_pallet_inbound_station": "Empty Pallet Inbound Station", |
| | | "empty_pallet_outbound_station": "Empty Pallet Outbound Station:", |
| | | "please_select_outbound_station": "Please select outbound station", |
| | | "start_outbound": "Start Outbound", |
| | | "extract": "Extract", |
| | | "extract_inventory_item": "Extract Inventory Item", |
| | | "target_empty_location": "Target Empty Location", |
| | | "location_transfer": "Location Transfer", |
| | | "please_enter_source_location": "Please enter source location", |
| | | "please_select_target_location": "Please select target location", |
| | | "please_enter_and_select": "Please enter and select", |
| | | "please_retrieve_location_first": "Please retrieve location first", |
| | | "current_retrieve_location": "Current location", |
| | | "add_inventory": "Add Inventory", |
| | | "adjust_inventory": "Adjust Inventory", |
| | | "actual_quantity": "Actual Qty", |
| | | "batch_edit": "Batch (Edit)", |
| | | "please_add_detail_first": "Please add detail first", |
| | | "quantity_cannot_be_less_than_zero": "Quantity cannot be less than zero", |
| | | "confirm_adjust_location_detail": "Are you sure to adjust details for location?", |
| | | "please_enter_valid_location_no": "Please enter valid location no", |
| | | "outbound_station": "Outbound Station:", |
| | | "outbound_quantity": "Outbound Qty", |
| | | "inventory_quantity": "Inventory Qty", |
| | | "outbound_qty_cannot_exceed_inventory_qty": "Outbound qty cannot exceed inventory qty", |
| | | "please_extract_inventory_item_first": "Please extract inventory item first", |
| | | "code": { "copy": "Copy Code", "copied": "Copied", "copyError": "Copy Failed", "maximize": "Maximize", "restore": "Restore", "preview": "Preview" }, |
| | | "colorpicker": { "clear": "Clear", "confirm": "OK" }, |
| | | "dropdown": { "noData": "No Data" }, |
| | | "flow": { "loadMore": "Load More", "noMore": "No More" }, |
| | | "transfer": { "noData": "No Data", "noMatch": "No Match", "title": ["List 1", "List 2"], "searchPlaceholder": "Search" }, |
| | | "tree": { "defaultNodeName": "Unnamed", "noData": "No Data", "deleteNodePrompt": "Delete node \"{name}\"?" }, |
| | | "upload": { "fileType": { "file": "File", "image": "Image", "video": "Video", "audio": "Audio" }, "validateMessages": { "fileExtensionError": "{fileType} format not supported", "filesOverLengthLimit": "Max {length} files", "currentFilesLength": "Selected {length} files", "fileOverSizeLimit": "Max size {size}" }, "chooseText": "{length} files" }, |
| | | "util": { "timeAgo": { "days": "{days} days ago", "hours": "{hours} hours ago", "minutes": "{minutes} mins ago", "future": "Future", "justNow": "Just now" }, "toDateString": { "meridiem": "AM/PM" } } |
| | | } |
| New file |
| | |
| | | { |
| | | "months": ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"], |
| | | "weeks": ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"], |
| | | "time": ["Hr", "Min", "Sec"], |
| | | "literal": { "year": "Year" }, |
| | | "selectDate": "Select Date", |
| | | "selectTime": "Select Time", |
| | | "startTime": "Start Time", |
| | | "endTime": "End Time", |
| | | "tools": { "confirm": "OK", "clear": "Clear", "now": "Now", "reset": "Reset" }, |
| | | "rangeOrderPrompt": "End time cannot be earlier than start time", |
| | | "invalidDatePrompt": "Invalid date or time", |
| | | "formatErrorPrompt": "Date format error, must follow: {format}", |
| | | "autoResetPrompt": "Auto reset", |
| | | "preview": "Preview" |
| | | } |
| New file |
| | |
| | | { |
| | | "select": { "noData": "No Data", "noMatch": "No Match", "placeholder": "Select" }, |
| | | "validateMessages": { "required": "Required", "phone": "Invalid Phone", "email": "Invalid Email", "url": "Invalid URL", "number": "Numbers Only", "date": "Invalid Date", "identity": "Invalid ID" }, |
| | | "verifyErrorPromptTitle": "Prompt" |
| | | } |
| New file |
| | |
| | | { |
| | | "confirm": "OK", "cancel": "Cancel", "defaultTitle": "Info", |
| | | "prompt": { "InputLengthPrompt": "Max {length} chars" }, |
| | | "photos": { "noData": "No photos", "tools": { "rotate": "Rotate", "scaleX": "Flip H", "zoomIn": "Zoom In", "zoomOut": "Zoom Out", "reset": "Reset", "close": "Close" }, "viewPicture": "View Original", "urlError": { "prompt": "Image error, continue?", "confirm": "Next", "cancel": "Exit" } } |
| | | } |
| New file |
| | |
| | | { |
| | | "sort": { "asc": "Ascending", "desc": "Descending" }, |
| | | "noData": "No Data", |
| | | "tools": { |
| | | "filter": { "title": "Filter Columns" }, |
| | | "export": { "title": "Export", "noDataPrompt": "No data", "compatPrompt": "IE not supported", "csvText": "Export CSV" }, |
| | | "print": { "title": "Print", "noDataPrompt": "No data" } |
| | | }, |
| | | "dataFormatError": "Data format error", |
| | | "xhrError": "Request error: {msg}", |
| | | "laypage": { |
| | | "prev": "Prev", "next": "Next", "first": "First", "last": "Last", |
| | | "total": "Total {total}", "pagesize": "/page", "goto": "Go to", "page": "Page", "confirm": "OK" |
| | | } |
| | | } |