首页
关于
友链
推荐
肥啾解析
百度一下
肥啾GPT
Search
1
宝塔面板登录 phpMyAdmin 提示服务器和客户端上指示的HTTPS之间不匹配
381 阅读
2
Customer complaints evolve with in-car tech
265 阅读
3
JavaScript解析
194 阅读
4
所谓关系
185 阅读
5
解决Edge浏览器提示“此网站已被人举报不安全”
157 阅读
默认分类
网游架设
手机游戏
python
PHP
Mysql
VBA
C++
JAVASCRIPT
javascript基础
Oracle
生产管理
计划控制
ERP系统开发
APS排产
MES研究
考勤系统
CPA
财管
实务
经济法
战略
审计
税法
藏书架
古典名著
世界名著
编程秘籍
攻防渗透
经管书籍
大佬传经
风雅读物
考试相关
心情格言
拾玉良言
外文报刊
外刊随选
Facebook
Twitter
China Daily
软考
登录
Search
标签搜索
期刊读物
古文
何瑜明
累计撰写
196
篇文章
累计收到
154
条评论
首页
栏目
默认分类
网游架设
手机游戏
python
PHP
Mysql
VBA
C++
JAVASCRIPT
javascript基础
Oracle
生产管理
计划控制
ERP系统开发
APS排产
MES研究
考勤系统
CPA
财管
实务
经济法
战略
审计
税法
藏书架
古典名著
世界名著
编程秘籍
攻防渗透
经管书籍
大佬传经
风雅读物
考试相关
心情格言
拾玉良言
外文报刊
外刊随选
Facebook
Twitter
China Daily
软考
页面
关于
友链
推荐
肥啾解析
百度一下
肥啾GPT
搜索到
196
篇与
的结果
2025-04-03
自动排产实现
测试数据排产测试数据.xlsx分班测试.xlsx排产测试数据结果.xlsx排产逻辑:将缺件的产品先按缺件时间先后,再按数量从少到多的顺序进行排列,优先完成同一缺件时间的小批量订单。然后将无法完成的订单递延到第二天继续生产,仍然是优先完成同一缺件时间的小批量订单,检查排产日期是否超过交付时间,排产时间需要早交付时间一天,否则预警.考虑种类和难易程度对产量影响,建立内外嵌套循环,当种类超过阈值则自动终止,若未超过阈值则会排满
2025年04月03日
62 阅读
0 评论
0 点赞
2025-04-01
代码参数修改
function displaySchedule() { const tbody = document.querySelector('#scheduleTable tbody'); tbody.innerHTML = ''; // 按生产日期分组显示 const productionGroups = [...new Set(scheduleData.map(item => item.productionDate))].sort((a, b) => new Date(a) - new Date(b) ); console.log("fest",productionGroups); for (const productionDate of productionGroups) { // 获取该生产日期的所有排产记录 const productions = scheduleData.filter(item => item.productionDate === productionDate); // 检查该生产日期是否有超期订单 const hasLateOrders = productions.some(item => item.isLate); // 添加生产日期标题行 const headerRow = document.createElement('tr'); headerRow.style.backgroundColor = '#f0f0f0'; headerRow.innerHTML = ` <td colspan="6"> <strong>生产日期: ${productionDate}</strong> ${hasLateOrders ? '<span class="warning"> (有超期订单)</span>' : '<span class="on-time"> (全部按时)</span>'} </td> `; tbody.appendChild(headerRow); // 添加该生产日期的所有排产记录 for (const production of productions) { // 获取该生产记录对应的订单 const order = rawData.find(item => item.productId === production.productId && item.deliveryDate === production.deliveryDate ); if (order) { const row = document.createElement('tr'); if (production.isLate) { row.classList.add('warning'); } row.innerHTML = ` <td>${production.productId}</td> <td>${production.quantity}</td> <td>${production.deliveryDate}</td> <td>${production.dailyMax}</td> <td>${production.productionDate}</td> <td>${production.isLate ? '是' : '否'}</td> `; tbody.appendChild(row); } } } }调用API模块代码function generateSchedule() { const btn = document.getElementById('generateBtn'); const loading = document.getElementById('loading'); btn.disabled = true; loading.style.display = 'inline'; setTimeout(() => { try { console.log("开始调用后端生成排产计划..."); if (rawData.length === 0) { alert('请先导入Excel数据'); return; } const workers = parseInt(document.getElementById('workers').value) || 3; const productivity = parseInt(document.getElementById('productivity').value) || 70; const startDateStr = document.getElementById('startDate').value; if (!startDateStr) { alert('请设置排产开始日期'); return; } fetch('https://ytpmc.anhuihym.top/pmc/schedule.php', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ data: rawData, workers: workers, productivity: productivity, startDate: startDateStr }) }) .then(response => response.json()) .then(result => { if (result.success) { console.log("排产数据:", result.scheduleData); console.log("预警数据:", result.warningData); displaySchedule(result.scheduleData); displayWarnings(result.warningData); updateSummary(); // 5. 显示结果 displaySchedule(); displayWarnings(); updateSummary(); } else { alert('排产失败: ' + result.message); } }) .catch(error => { console.error("调用排产API出错:", error); alert('调用排产API出错: ' + error.message); }) .finally(() => { btn.disabled = false; loading.style.display = 'none'; }); } catch (error) { console.error("生成排产计划时出错:", error); alert('生成排产计划时出错: ' + error.message); btn.disabled = false; loading.style.display = 'none'; } }, 100); }函数概述displaySchedule() 函数负责将排产计划数据 scheduleData 显示在 HTML 表格中。它首先清空表格的 tbody 部分,然后根据生产日期对数据进行分组,并为每个组添加标题行和相应的排产记录行。外部变量依赖scheduleData:包含排产计划数据的数组。每个元素应包含 productionDate, productId, quantity, deliveryDate, dailyMax, 和 isLate 等属性。rawData:包含原始订单数据的数组。每个元素应包含 productId 和 deliveryDate 等属性,用于与 scheduleData 中的记录进行匹配。函数逻辑清空表格:使用 tbody.innerHTML = ''; 清空表格的 tbody 部分。按生产日期分组:使用 Set 和 map 方法获取唯一的生产日期列表,并按日期排序。遍历每个生产日期:为每个生产日期创建一个标题行,并根据是否有超期订单添加相应的警告信息。遍历该生产日期的所有排产记录:为每个排产记录创建一个表格行,并根据是否超期添加警告类。匹配订单数据:在创建排产记录行时,从 rawData 中找到对应的订单数据,以获取更详细的信息(虽然在当前函数实现中并未直接使用这些信息,但可能是为了后续扩展)。导致无法显示的主要原因是后端赋值时被全局变量作用域污染导致仍然时空数组、修复后如下if (result.success) { // 深拷贝数据(如需独立性) scheduleData = JSON.parse(JSON.stringify(result.scheduleData)); warningData = JSON.parse(JSON.stringify(result.warningData)); // 使用全局变量渲染 displaySchedule(scheduleData); displayWarnings(warningData); updateSummary(); }
2025年04月01日
35 阅读
0 评论
0 点赞
2025-03-31
$stmt报错
$stmt = $mysqli->prepare("INSERT INTO complete (part_number, quantity, time) VALUES (?, ?, ?)");if (!$stmt) {die("预处理失败: " . $mysqli->error);}原stmt$stmt = $mysqli->prepare("INSERT INTO complete (part_number, quantity, time) VALUES (?, ?, ?) ;
2025年03月31日
34 阅读
0 评论
0 点赞
2025-03-31
MYsql绑定参数案例
SQL 语句的结构sqlCopy CodeINSERT INTO complete (part_number, quantity, time)VALUES (?, ?, ?)ON DUPLICATE KEY UPDATE estimated_delivery_date = ?, quantity = ?, zt = ?INSERT INTO complete (part_number, quantity, time)指定要插入数据的表 complete 和对应的列:part_number(零件编号)、quantity(数量)、time(时间)。VALUES (?, ?, ?)使用占位符 ? 表示需要动态插入的值。这些值会在后续通过 bind_param 方法绑定。ON DUPLICATE KEY UPDATE如果插入的数据与表中已有的某条记录的主键或唯一键冲突(即重复),则执行更新操作,而不是插入新记录。estimated_delivery_date = ?, quantity = ?, zt = ?如果发生冲突,更新 estimated_delivery_date(预计交付日期)、quantity(数量)和 zt(某个字段,可能是状态或其他信息)的值。这些值也通过占位符 ? 表示。$stmt = $mysqli->prepare(...)使用 $mysqli->prepare 方法准备 SQL 语句,返回一个 mysqli_stmt 对象(即预处理语句对象)。预处理语句可以提高 SQL 执行效率,并防止 SQL 注入攻击。bind_param 方法phpCopy Code$stmt->bind_param("ssissssi", $partNumber, $quantity, $time);将动态值绑定到 SQL 语句中的占位符 ?。第一个参数 "ssissssi"指定每个占位符的数据类型:s:字符串i:整数根据 SQL 语句,这里可能需要调整数据类型。后续参数按顺序传入要绑定的值:$partNumber、$quantity、$time 等。ON DUPLICATE KEY UPDATE 的逻辑如果 part_number 是表的主键或唯一键,且插入的 part_number 已存在,则执行更新操作。更新的字段是 estimated_delivery_date、quantity 和 zt,其值通过占位符 ? 绑定。代码中的问题bind_param 的参数数量不匹配SQL 语句中有 6 个占位符(?, ?, ?, ?, ?, ?),但 bind_param 只绑定了 3 个值($partNumber, $quantity, $time)。需要补充 estimated_delivery_date、quantity 和 zt 的值。数据类型可能不匹配确保 bind_param 的第一个参数(如 "ssissssi")与传入值的数据类型一致。缺少更新字段的值在 ON DUPLICATE KEY UPDATE 中,estimated_delivery_date、quantity 和 zt 的值需要在循环中动态绑定。
2025年03月31日
52 阅读
0 评论
0 点赞
2025-03-29
批量更新SQL语句
$placeholders = implode(',', array_fill(0, count($receivedOrderNumbers), '?')); $sql = "UPDATE orders SET zt = CASE WHEN order_number IN ($placeholders) THEN 'open' ELSE 'close' END"; 快速模式 回答完成 这段代码的目的是生成一个 UPDATE SQL 查询,根据 order_number 的值动态更新 zt 字段为 'open' 或 'close'。以下是代码的详细解析和注意事项: 代码解析: $placeholders = implode(',', array_fill(0, count($receivedOrderNumbers), '?')): 生成一个包含 ? 占位符的字符串,占位符的数量与 $receivedOrderNumbers 数组的长度一致。 例如,如果 $receivedOrderNumbers 有 3 个元素,$placeholders 的值将是 '?,?,?'。 $sql = "UPDATE orders SET zt = CASE WHEN order_number IN ($placeholders) THEN 'open' ELSE 'close' END": 构建一个 UPDATE 查询,使用 CASE 语句动态更新 zt 字段。 如果 order_number 在 $receivedOrderNumbers 中,则将 zt 设置为 'open',否则设置为 'close'。 生成的 SQL 示例: 假设 $receivedOrderNumbers 是 [101, 102, 103],生成的 SQL 查询将是: sql Copy Code UPDATE orders SET zt = CASE WHEN order_number IN (?, ?, ?) THEN 'open' ELSE 'close' END 使用场景: 这段代码适用于批量更新数据库中某个字段的值,根据条件动态设置不同的值。例如: 将特定订单的状态更新为 'open',其他订单的状态更新为 'close'。 注意事项: 参数绑定: 使用 ? 占位符时,必须将 $receivedOrderNumbers 的值作为参数绑定到查询中,以避免 SQL 注入风险。 示例(使用 PDO): php Copy Code $stmt = $pdo->prepare($sql); $stmt->execute($receivedOrderNumbers); ELSE 的作用: 如果没有 ELSE,所有不满足 WHEN 条件的记录将不会被更新。 如果希望未匹配的记录保持原值,可以移除 ELSE 'close'。 性能问题: 如果 $receivedOrderNumbers 包含大量元素,生成的 SQL 可能会很长,影响性能。 可以考虑分批更新或优化查询逻辑。 改进建议: 如果只需要更新匹配的记录,可以简化查询: php Copy Code $placeholders = implode(',', array_fill(0, count($receivedOrderNumbers), '?')); $sql = "UPDATE orders SET zt = 'open' WHERE order_number IN ($placeholders)"; 这样只会更新 order_number 在 $receivedOrderNumbers 中的记录,其他记录不会被修改。
2025年03月29日
40 阅读
0 评论
0 点赞
1
...
22
23
24
...
40
0:00