首页
关于
友链
推荐
肥啾解析
百度一下
肥啾GPT
Search
1
宝塔面板登录 phpMyAdmin 提示服务器和客户端上指示的HTTPS之间不匹配
321 阅读
2
Customer complaints evolve with in-car tech
222 阅读
3
JavaScript解析
182 阅读
4
所谓关系
149 阅读
5
人类果然都是好争斗的
126 阅读
默认分类
网游架设
手机游戏
python
PHP
Mysql
VBA
C++
JAVASCRIPT
javascript基础
Oracle
生产管理
计划控制
ERP系统开发
APS排产
MES研究
考勤系统
CPA
财管
实务
经济法
战略
审计
税法
藏书架
古典名著
世界名著
编程秘籍
攻防渗透
经管书籍
大佬传经
风雅读物
考试相关
心情格言
拾玉良言
外文报刊
外刊随选
Facebook
Twitter
China Daily
软考
登录
Search
标签搜索
期刊读物
古文
何瑜明
累计撰写
180
篇文章
累计收到
154
条评论
首页
栏目
默认分类
网游架设
手机游戏
python
PHP
Mysql
VBA
C++
JAVASCRIPT
javascript基础
Oracle
生产管理
计划控制
ERP系统开发
APS排产
MES研究
考勤系统
CPA
财管
实务
经济法
战略
审计
税法
藏书架
古典名著
世界名著
编程秘籍
攻防渗透
经管书籍
大佬传经
风雅读物
考试相关
心情格言
拾玉良言
外文报刊
外刊随选
Facebook
Twitter
China Daily
软考
页面
关于
友链
推荐
肥啾解析
百度一下
肥啾GPT
搜索到
38
篇与
的结果
2025-07-03
此内容被密码保护
加密文章,请前往内页查看详情
2025年07月03日
26 阅读
0 评论
0 点赞
2025-04-19
测试
<?php header('Content-Type: application/json'); header('Access-Control-Allow-Origin: *'); header('Access-Control-Allow-Methods: POST'); header('Access-Control-Allow-Headers: Content-Type'); try { $input = json_decode(file_get_contents('php://input'), true); if (!$input || !isset($input['data']) || empty($input['data'])) { throw new Exception('无效数据,请检查输入'); } $rawData = $input['data']; $workers = isset($input['workers']) ? intval($input['workers']) : 3; $productivity = isset($input['productivity']) ? intval($input['productivity']) : 70; $startDateStr = isset($input['startDate']) ? $input['startDate'] : null; if (!$startDateStr) { throw new Exception('请提供排产开始日期'); } // 数据库连接 $pdo = new PDO("mysql:host=localhost;dbname=ytpmc;charset=utf8", "ytpmc", "ytpmc321"); $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // 查询 sl 表 $slMap = []; $stmt = $pdo->query("SELECT productId, sl FROM text"); while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) { $slMap[$row['productId']] = intval($row['sl']); } $dailyCapacity = $workers * $productivity; $scheduleData = []; $warningData = []; usort($rawData, function ($a, $b) { $dateDiff = strtotime($a['deliveryDate']) - strtotime($b['deliveryDate']); return $dateDiff !== 0 ? $dateDiff : ($a['originalQuantity'] - $b['originalQuantity']); }); $currentDate = new DateTime($startDateStr); $dailyRemaining = $dailyCapacity; $dailyProductionMap = []; // 每日产品排产汇总 $dailyProductCount = 0; $queue = $rawData; while (!empty($queue)) { $isAnyOrderScheduled = false; foreach ($queue as $key => &$item) { $productId = $item['productId']; $quantityRemaining = $item['quantity']; // 获取 sl,并同步 dailyMax if (isset($slMap[$productId])) { $sl = $slMap[$productId]; $item['dailyMax'] = min($item['dailyMax'], $sl); } else { $sl = $item['dailyMax']; } $alreadyProducedToday = $dailyProductionMap[$productId]['quantity'] ?? 0; // 还可排产量(不能超过 dailyMax,也不能超过日产能剩余) $maxAllocatable = min( $quantityRemaining, $item['dailyMax'] - $alreadyProducedToday, $dailyRemaining ); if ($maxAllocatable > 0) { // 累加数量 if (isset($dailyProductionMap[$productId])) { $dailyProductionMap[$productId]['quantity'] += $maxAllocatable; } else { $dailyProductionMap[$productId] = [ 'productId' => $productId, 'quantity' => $maxAllocatable, 'deliveryDate' => $item['deliveryDate'], 'dailyMax' => $item['dailyMax'], 'productionDate' => $currentDate->format('Y-m-d'), 'isLate' => strtotime($currentDate->format('Y-m-d')) > strtotime($item['deliveryDate']), 'sl' => $sl ]; } $item['quantity'] -= $maxAllocatable; $dailyRemaining -= $maxAllocatable; $dailyProductCount++; $isAnyOrderScheduled = true; if ($item['quantity'] <= 0) { unset($queue[$key]); } } if ($dailyProductCount >= 80) { break; } } // 保存每日排产记录 if (!empty($dailyProductionMap)) { foreach ($dailyProductionMap as $record) { $scheduleData[] = $record; } } // 下一天 $currentDate->modify('+1 day'); $dailyRemaining = $dailyCapacity; $dailyProductCount = 0; $dailyProductionMap = []; } // 预警检查 foreach ($rawData as $item) { $lastProdDate = null; foreach ($scheduleData as $schedule) { if ($schedule['productId'] === $item['productId'] && $schedule['deliveryDate'] === $item['deliveryDate']) { $lastProdDate = new DateTime($schedule['productionDate']); } } if ($lastProdDate && $lastProdDate > new DateTime($item['deliveryDate'])) { $lateDays = $lastProdDate->diff(new DateTime($item['deliveryDate']))->days; $warningData[] = [ 'productId' => $item['productId'], 'quantity' => $item['originalQuantity'], 'deliveryDate' => $item['deliveryDate'], 'dailyMax' => $item['dailyMax'], 'productionDate' => $lastProdDate->format('Y-m-d'), 'lateDays' => $lateDays ]; } } echo json_encode([ 'success' => true, 'scheduleData' => $scheduleData, 'warningData' => $warningData ]); } catch (Exception $e) { echo json_encode([ 'success' => false, 'message' => $e->getMessage() ]); } ?>
2025年04月19日
13 阅读
0 评论
0 点赞
2025-04-11
test
<!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>生产计划跟踪</title> <link href="https://cdn.bootcdn.net/ajax/libs/twitter-bootstrap/5.1.3/css/bootstrap.min.css" rel="stylesheet"> <style> .nav-tabs { border-bottom: 2px solid #0d6efd; } .tab-pane { padding: 20px 0; } .progress-bar { transition: width 0.3s ease; } input[type="number"] { max-width: 120px; } .card { box-shadow: 0 2px 8px rgba(0,0,0,0.1); } .table-hover tbody tr:hover { background-color: #f8f9fa; } </style> </head> <body class="bg-light"> <div class="container py-4"> <!-- 产品汇总标签页 --> <h3 class="mb-4 text-primary">生产计划总览</h3> <nav> <div class="nav nav-tabs" id="nav-tab" role="tablist"> <?php $conn = new mysqli("localhost", "ytpmc", "ytpmc321", "ytpmc"); $parts = $conn->query("SELECT num, sum(sl),ht as total FROM `ordert` where ht='缠布' GROUP BY num"); $parts2 = $conn->query("SELECT num,part,sl,pbsj,zt,ht FROM `ordert` where ht='缠布'"); $first = true; while($row = $parts->fetch_assoc()) { // $active = $first ? 'active' : ''; echo '<button class="nav-link '.$active.'" data-bs-toggle="tab" data-bs-target="#part'.$row['num'].'" type="button"> '.$row['num'].' <span class="badge bg-primary">'.$row['total'].'</span> </button>'; $first = false; } ?> </div> </nav> <!-- 明细内容区域 --> <div class="tab-content mt-3" id="nav-tabContent"> <?php $parts2 = $conn->query("SELECT num,part,sl,pbsj,zt,ht FROM `ordert` where ht='缠布'"); $parts2->data_seek(0); while($part = $parts2->fetch_assoc()) { $active = $part === reset($parts2) ? 'show active' : ''; echo '<div class="tab-pane fade '.$active.'" id="part'.$part['num'].'"> <div class="card"> <div class="card-header bg-white"> <h5>'.$part['num'].' - 生产明细</h5> </div> <div class="card-body"> <table class="table table-hover"> <thead> <tr> <th>产品编号</th> <th>需求数量</th> <th>完成数量</th> <th>操作</th> </tr> </thead> <tbody>'; $sql = "SELECT id,part,sl,wc_sl,zt,ht FROM `ordert` WHERE ht='缠布' AND num='{$part['num']}'"; $details = $conn->query($sql); while($row = $details->fetch_assoc()) { echo '<tr> <td>'.$row['part'].'</td> <td>'.$row['sl'].'</td> <td> <input type="number" class="form-control complete-input" min="0" max="'.$row['sl'].'" value="'.$row['wc_sl'].'" '.($row['zt'] == 'wc' ? 'disabled' : '').'> </td> <td> <button class="btn btn-sm '.($row['zt'] == 'wc' ? 'btn-success' : 'btn-primary').' save-btn" data-num="'.$row['part'].'" '.($row['zt'] == 'wc' ? 'disabled' : '').'> '.($row['zt'] == 'wc' ? '已完成' : '保存').' </button> </td> </tr>'; } echo '</tbody></table></div></div></div>'; } ?> </div> </div> <script src="https://cdn.bootcdn.net/ajax/libs/bootstrap/5.1.3/js/bootstrap.bundle.min.js"></script> <script> document.querySelectorAll('.save-btn').forEach(btn => { btn.addEventListener('click', async function() { const num = this.dataset.num; const wc_sl = this.closest('tr').querySelector('.complete-input').value; try { const response = await fetch('update.php', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ num, wc_sl }) }); const result = await response.json(); if(result.success) { alert('保存成功!'); location.reload(); } else { alert('保存失败:' + result.message); } } catch(error) { console.error('Error:', error); } }); }); </script> </body> </html>
2025年04月11日
11 阅读
0 评论
0 点赞
2025-04-06
悬停隐藏URL
<a href="javascript:void(0);" onclick="redirectTo('https://example.com')">隐藏URL的链接</a> <script> function redirectTo(url) { window.location.href = url; } </script> 示例try { if (item.isHeader == "1") { str = "<li class='menu-header'>" + item.name + "</li>"; $(parent).append(str); if (item.childMenus != "") { initMenu(item.childMenus, parent); } } else { item.icon == "" ? item.icon = "" : item.icon = item.icon; if (item.childMenus == "") { // 修改普通菜单项的href为JavaScript伪协议,并用data-url存储真实地址 str = `<li><a href="javascript:void(0)" data-url="${item.url}"><i class='icon-font'>${item.icon}</i><span>${item.name}</span></a></li>`; $(parent).append(str); } else { // 父级菜单项移除真实href,保留点击功能用于展开 str = `<li><a href="javascript:void(0)"><i class='icon-font'>${item.icon}</i><span>${item.name}</span><i class='icon-font icon-right'></i></a> <ul class='menu-item-child' id='menu-child-${item.id}'></ul></li>`; $(parent).append(str); var childParent = $("#menu-child-" + item.id); initMenu(item.childMenus, childParent); } } } catch (e) { console.error(e); } // 在文档加载后绑定点击事件(放在代码末尾或单独脚本中) $(function() { // 普通菜单跳转逻辑 $('body').on('click', 'a[data-url]', function(e) { e.preventDefault(); window.location.href = $(this).data('url'); }); // 子菜单展开逻辑(根据现有功能补充,示例如下) $('body').on('click', 'li > a:has(+ .menu-item-child)', function(e) { e.preventDefault(); $(this).next('.menu-item-child').slideToggle(); }); });
2025年04月06日
14 阅读
0 评论
0 点赞
2025-04-03
自动排产实现
测试数据排产测试数据.xlsx分班测试.xlsx排产测试数据结果.xlsx排产逻辑:将缺件的产品先按缺件时间先后,再按数量从少到多的顺序进行排列,优先完成同一缺件时间的小批量订单。然后将无法完成的订单递延到第二天继续生产,仍然是优先完成同一缺件时间的小批量订单,检查排产日期是否超过交付时间,排产时间需要早交付时间一天,否则预警.考虑种类和难易程度对产量影响,建立内外嵌套循环,当种类超过阈值则自动终止,若未超过阈值则会排满
2025年04月03日
30 阅读
0 评论
0 点赞
1
...
5
6
7
8
0:00