String sqlb="insert into employee (id,name,salary,department_id) values(?,?,?,?)";

本文介绍了一个使用Java实现的部门与员工信息管理系统。该系统利用Apache Commons DbUtils库进行数据库操作,包括添加部门及其关联员工信息,以及按需查询部门详情(包括其下属员工)。通过该系统可以有效地管理组织结构中的部门和员工数据。
package com.tfy.itheima.dao.impl;


import java.util.List;


import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanHandler;
import org.apache.commons.dbutils.handlers.BeanListHandler;


import com.tfy.itheima.domain.Department;
import com.tfy.itheima.domain.Employee;
import com.tfy.itheima.jdbc.util.DbcpUtil;


public class DepartmentDaoImpl {
private QueryRunner qr=new QueryRunner(DbcpUtil.getDataSource());
public void addDepartment(Department dept){
try{
//保存部门的基本信息
String sqla="insert into department (id,name) values(?,?)";
Object params1[]={dept.getId(),dept.getName()};
qr.update(sqla, params1);
//看dept有没有关联的员工信息
List <Employee>emps=dept.getEmps();
//如果有,还要将员工的信息保存到Employeee表中
if(emps!=null && emps.size()>0){
String sqlb="insert into employee (id,name,salary,department_id) values(?,?,?,?)";
Object [][] params2=new Object[emps.size()][];
for(int i=0;i<emps.size();i++){
Employee e=emps.get(i);
params2[i]=new Object[]{e.getId(),e.getName(),e.getSalary(),dept.getId()};

}
qr.batch(sqlb, params2);
}

}catch(Exception e){
e.printStackTrace();
throw new RuntimeException(e);
}
}
//对于多的一方,要不要查出来,看业务需求
public Department findDepartmentById(Integer deptId){
return findDepartmentById(deptId, true);
/*try{
String sql1="select * from department where id=?";
Department dept = qr.query(sql1, new BeanHandler<Department>(Department.class),deptId);

String sql2="select * from employee where department_id=?";
List<Employee> emps = qr.query(sql2, new BeanListHandler<Employee>(Employee.class), deptId);

if(emps!=null){
dept.setEmps(emps);
}
return dept;
}catch(Exception e){
e.printStackTrace();
throw new RuntimeException(e);
}*/
}
//对于多的一方,要不要查出来,看业务需求
public Department findDepartmentById(Integer deptId,boolean lazy){
try{
String sql1="select * from department where id=?";
Department dept = qr.query(sql1, new BeanHandler<Department>(Department.class),deptId);

if(lazy){
String sql2="select * from employee where department_id=?";
List<Employee> emps = qr.query(sql2, new BeanListHandler<Employee>(Employee.class), deptId);

if(emps!=null){
dept.setEmps(emps);
}
}
return dept;
}catch(Exception e){
e.printStackTrace();
throw new RuntimeException(e);
}
}
}
<?php require_once "checkLogin.php"; ini_set('display_errors',1); //错误信息 ini_set('display_startup_errors',1); //php启动错误信息 error_reporting(-1); //打印出所有的 错误信息 require_once "./database/DB.class.php"; header('Content-Type: application/json'); $date = date("Y-m-d H:i:s", time() + 8 * 60 * 60); $add_person = isset($_SESSION['shipping_db_username'])?$_SESSION['shipping_db_username']:''; // 接收 POST 数据 $input = json_decode(file_get_contents('php://input'), true); if (!$input) { $input = $_POST; // 兜底从 form-data 获取 } $db = MySQLDB::getInstance(); $ids = $input['ids'] ?? []; $action = trim($input['action'] ?? ''); if (empty($ids)) { echo json_encode(['code' => 1, 'msg' => '未选择任何记录']); exit; } try { // 开启事务 $db->beginTransaction(); $successCount = 0;$arr=explode(",",$ids); if($action=="通过"){ foreach($arr as $id){ $sql = "UPDATE return_shipping_info SET confirm_status = '通过',mc_confirm = '{$add_person}',status='待装车',confirm_time='{$date}' WHERE id = '{$id}'"; $result = $db->query($sql); if ($result) { $successCount += 1; // 实际影响行数 } else { throw new Exception("Update failed for ID: $id"); } } }else{ foreach($arr as $id){ $sql = "UPDATE return_shipping_info SET confirm_status = '退回',mc_confirm = '{$add_person}',status='待审核',confirm_time='{$date}',prepared_qty='0',dr='',vehicle_info='',maintain_dri='' WHERE id = '{$id}'"; $result = $db->query($sql); if ($result) { $successCount += 1; // 实际影响行数 $sqlb = "DELETE FROM `box_number_matching` WHERE return_id='{$id}'"; $resultb = $db->query($sqlb); } else { throw new Exception("Update failed for ID: $id"); } } } // 如果所有都成功,则提交事务 $db->commit(); // 返回成功响应 echo json_encode([ 'code' => 0, 'msg' => "更新成功,共更新 {$successCount} 条记录", 'affected' => $successCount ]); } catch (Exception $e) { $db->rollback(); error_log("Update Error: " . $e->getMessage()); echo json_encode(['code' => 1, 'msg' => '系统错误: ' . $e->getMessage()]); } ?>把代码中的循环改下,换个方式
最新发布
11-26
<?php ini_set('display_errors',1); //错误信息 ini_set('display_startup_errors',1); //php启动错误信息 error_reporting(-1); //打印出所有的 错误信息 header('Content-Type: application/json; charset=utf-8'); require_once dirname(__FILE__)."../../../../../phpspreadsheet/vendor/autoload.php"; require_once "../../../database/DB.class.php"; $date=date("Y-m-d H:i:s",time()+8*60*60); $db = MySQLDB::getInstance(); set_time_limit(0); $project = isset($_POST['project'])?$_POST['project']:@$_GET['project']; $db->beginTransaction(); $total = 0; // 统计总插入条数(解决作用域问题) function convertDateToWeekFormat($date) { // 将输入的字符串转换为 DateTime 对象 $inputDateTime = new DateTime($date); // 获取当前日期是星期几(1 表示星期日,2 表示星期一,以此类推 $weekDay = date('N'); if($weekDay<4){ // 将日期减去4天 $inputDateTime->modify('-7 days'); } // 获取月份缩写 $monthAbbreviation = $inputDateTime->format('M'); // 提取年份最后两位 $yearLastTwoDigits = substr($inputDateTime->format('Y'), -2); // 创建一个时间戳,用于计算第几周(Week) $weekNumber = (int)ceil(($inputDateTime->getTimestamp() - strtotime("{$date} - 1 day")) / (7 * 86400)); // 计算该日期所在的周数(从当年的第一天开始计算) $weekNumber = (int)$inputDateTime->format('W'); // return "{$yearLastTwoDigits}{$monthAbbreviation} wk{$weekNumber}"; return "{$yearLastTwoDigits}wk{$weekNumber}"; } $week=convertDateToWeekFormat($date); // 产能计划计算 function CapactityPlan($db, $project, $module, $col,$week) { $days = "day" . $col; // 改用预处理语句防注入 $sqla = "select `$days` as qty from ctb_capacity where `project` = '$project' and module='$module' and week='$week'"; $resa = $db->fetchRow($sqla); if(empty($resa)){$resa['qty']=0;} $sqlb = "select sum(qty) as qty from openpo_plan where `project` = '$project' and module='$module' and week='$week' and days = '$days'"; $resb = $db->fetchRow($sqlb); if(empty($resb)){$resa['qty']=0;} $qty = ($resa['qty'] ?? 0) - ($resb['qty'] ?? 0); return $qty < 0 ? 0 : $qty; } // eeee库存计算 function eeeeStock($db, $project, $module, $eeee, $col,$week) { $days = "day" . $col; if ($col == 1) { $sqla = "select `$days` as qty from ctb_eeee where `project` = '$project' and module = '$module' and week='$week' and `eeee` like '%$eeee%'"; $resa = $db->fetchRow($sqla); } else { $sumDays = []; for ($i = 1; $i <= $col; $i++) { $sumDays[] = "`day$i`"; } $sumDaysStr = implode('+', $sumDays); $sqla = "select sum($sumDaysStr) as qty from ctb_eeee where `project` = '$project' and module = '$module' and week='$week' and `eeee` like '%$eeee%'"; $resa = $db->fetchRow($sqla); } $sqlb = "select sum(qty) as qty from openpo_plan where `project` = '$project' and module = '$module' and week='$week' and `eeee` like '%$eeee%'"; $resb = $db->fetchRow($sqlb); $qty = ($resa['qty'] ?? 0) - ($resb['qty'] ?? 0); return $qty < 0 ? 0 : $qty; } // Hsg库存计算 function HsgStock($db, $project, $module, $knk, $color_code, $col) { $days = "day" . $col; if ($col == 1) { $sqla = "select `$days` as qty from ctb_hsg where `project` = '$project' and `knk` = '$knk' and color_code = '$color_code'"; $resa = $db->fetchRow($sqla); } else { $sumDays = []; for ($i = 1; $i <= $col; $i++) { $sumDays[] = "`day$i`"; } $sumDaysStr = implode('+', $sumDays); $sqla = "select sum($sumDaysStr) as qty from ctb_hsg where `project` = '$project' and `knk` = '$knk' and color_code = '$color_code'"; $resa = $db->fetchRow($sqla); } $sqlb = "select sum(qty) as qty from openpo_plan where `project` = '$project' and `knk` = '$knk' and color_code = '$color_code'"; $resb = $db->fetchRow($sqlb); $qty = ($resa['qty'] ?? 0) - ($resb['qty'] ?? 0); return $qty < 0 ? 0 : $qty; } // 取最小值 function getMin_first($a, $b, $c) { return min([$a, $b, $c]); } // 取最小值 function getMin_second($a, $b) { return min([$a, $b]); } function getWeekday($date) { // 将日期字符串转为 Unix 时间戳 $timestamp = strtotime($date); // 获取星期几,返回值从周日开始(0 表示周日) return date('w', $timestamp); } $sql = "DELETE FROM openpo_plan where week ='$week' and project='$project'"; $res = $db->query($sql); // 提前查询openpo数据(减少重复查询) $sqla = "select * from openpo where week ='$week' and project='$project'"; $resa = $db->fetchAll($sqla); $now = new DateTime(); $current_date = $now->format('Y-m-d'); $Sunday = strtotime($date) + (7 - getWeekday($date)) * 86400; //周日 $aftermon_timestamp = strtotime($date) + (7 - getWeekday($date)) * 86400 + (3 * 86400); //第一天 $aftermon = date('Y-m-d', $aftermon_timestamp); //第一天 // 生成后续日期 $day0 = date('Y-m-d', $Sunday); $day1 = date('Y-m-d', $aftermon_timestamp + 0 * 86400); // 第1天 $day2 = date('Y-m-d', $aftermon_timestamp + 1 * 86400); // 第2天 $day3 = date('Y-m-d', $aftermon_timestamp + 2 * 86400); // 第3天 $day4 = date('Y-m-d', $aftermon_timestamp + 3 * 86400); // 第4天 $day5 = date('Y-m-d', $aftermon_timestamp + 5 * 86400); // 第5天 $day6 = date('Y-m-d', $aftermon_timestamp + 6 * 86400); // 第6天 $day7 = date('Y-m-d', $aftermon_timestamp + 7 * 86400); // 第7天 $day8 = date('Y-m-d', $aftermon_timestamp + 8 * 86400); // 第8天 $day9 = date('Y-m-d', $aftermon_timestamp + 9 * 86400); // 第9天 $day10 = date('Y-m-d', $aftermon_timestamp + 10 * 86400); // 第10天 $day11 = date('Y-m-d', $aftermon_timestamp + 12 * 86400); // 第11天 $day12 = date('Y-m-d', $aftermon_timestamp + 13 * 86400); // 第12天 $mo_dates=[$day0,$day1,$day2,$day3,$day4,$day5,$day6,$day7,$day8,$day9,$day10,$day11,$day12]; $dataA=[]; // 循环处理12个周期 for ($col = 1; $col <= 12; $col++) { $days = "day" . $col; $mo_date = $mo_dates[$col]; $i = 0; foreach ($resa as $row) { // 提取数据 $project = $row['project']; $module = $row['module']; $stage = $row['stage']; $pc_type = $row['pc_type']; $cust_pn = $row['cust_pn']; $knk = $row['knk']; $color_code = $row['color_code']; $color_option = $row['color_option']; $eeee = $row['eeee']; // 计算可用资源 $SurPlusCapactity = CapactityPlan($db, $project, $module, $col,$week); if($col<=6){ $SurPluseeeeStock = eeeeStock($db, $project, $module, $eeee, $col,$week); // $SurPlusHsgStock = HsgStock($db, $project, $module, $knk, $color_code, $col); }else{ $SurPluseeeeStock =0; // $SurPlusHsgStock =0; } // 计算待排和已排数量(修正条件判断和变量名) if ($col == 1) { // 修正:== 判断相等 $daipaip0[$i] = $row['p0']; // $daipai = getMin_first($daipaip0[$i], $SurPlusCapactity, $SurPluseeeeStock, $SurPlusHsgStock); $daipai = getMin_first($daipaip0[$i], $SurPlusCapactity, $SurPluseeeeStock); $yipaip0[$i] = $daipai; $SurPlusDaipai = max($daipaip0[$i] - $yipaip0[$i], 0); $daipaip0[$i] = $SurPlusDaipai; } else { if($col<=6){ // $daipai = getMin_first($daipaip0[$i], $SurPlusCapactity, $SurPluseeeeStock, $SurPlusHsgStock); // 修正变量名 $daipai = getMin_first($daipaip0[$i], $SurPlusCapactity, $SurPluseeeeStock); // 修正变量名 }else{ $daipai = getMin_second($daipaip0[$i], $SurPlusCapactity); // 修正变量名 } $yipaip0[$i] = $daipai; $SurPlusDaipai = max($daipaip0[$i] - $yipaip0[$i], 0); $daipaip0[$i] = $SurPlusDaipai; } // $dataA[]=[$daipaip0[$i],$cust_pn, $project,$module,$eeee,$knk, $color_code,$daipaip0[$i],$SurPlusCapactity,$SurPluseeeeStock,$yipaip0[$i],$SurPlusDaipai,$days ,"p0"]; if($daipai >0){ // 插入openpo_plan(单条插入修正) $dataA[]=[$daipaip0[$i],$cust_pn, $project,$module,$eeee,$knk, $color_code,$daipaip0[$i],$SurPlusCapactity,$SurPluseeeeStock,$yipaip0[$i],$SurPlusDaipai,$days ,"p0"]; $values = [ $project, $module,$stage, $pc_type, $cust_pn, $knk, $color_code, $color_option, $eeee, $daipai, $days,"P0", $mo_date, $week, $date ]; $data['project']=$project; $data['module']=$module; $data['stage']=$stage; $data['pc_type']=$pc_type; $data['cust_pn']=$cust_pn; $data['knk']=$knk; $data['color_code']=$color_code; $data['color_option']=$color_option; $data['eeee']=$eeee; $data['qty']=$daipai; $data['days']=$days; $data['agep0']="P0"; $data['mo_date']=$mo_date; $data['week']=$week; $data['create_time']=$date; $types = ''; // $params = []; foreach ($values as $value) { if (is_int($value)) { $types .= 'i'; // 如果是整数类型 $params[] = &$value; } else { $types .= 's'; // 否则假定为字符串类型 $params[] = &$value; } } $placeholders = '(' . implode(',', array_fill(0, count($values), '?')) . ')'; $sqlb = "INSERT INTO `openpo_plan` ( `project`,`module`,`stage`,`pc_type`,`cust_pn`,`knk`, `color_code`,`color_option`,`eeee`,`qty`,`days`,`agep0`,`mo_date`,`week`,`create_time` ) values ".$placeholders; // 单条占位符 $stmt = $db->query($sqlb,$types,$data); if ($stmt) { $total++; // 累计成功条数 } } $i++; } // 处理age相关逻辑(同上面p0逻辑,省略重复注释) $i = 0;$j =0; foreach ($resa as $row) { // 提取数据(同上) $project = $row['project']; $module = $row['module']; $stage = $row['stage']; $pc_type = $row['pc_type']; $cust_pn = $row['cust_pn']; $knk = $row['knk']; $color_code = $row['color_code']; $color_option = $row['color_option']; $eeee = $row['eeee']; // 计算可用资源(同上) $SurPlusCapactity = CapactityPlan($db, $project, $module, $col, $week); if($col<=6){ $SurPluseeeeStock = eeeeStock($db, $project, $module, $eeee, $col, $week); // $SurPlusHsgStock = HsgStock($db, $project, $module, $knk, $color_code, $col); }else{ $SurPluseeeeStock =0; // $SurPlusHsgStock =0; } // 计算待排和已排数量 if ($col == 1) { // 修正:== 判断相等 $daipaiage[$i] = $row['age']- $yipaip0[$i]; // $daipai = getMin_first($daipaiage[$i], $SurPlusCapactity, $SurPluseeeeStock, $SurPlusHsgStock); $daipai = getMin_first($daipaiage[$i], $SurPlusCapactity, $SurPluseeeeStock); $yipaiage[$i] = $daipai; $SurPlusDaipai = max($daipaiage[$i] - $yipaiage[$i],0);$daipaiage[$i] = $SurPlusDaipai; } else { $daipaiage[$i] = max($daipaiage[$i] - $yipaip0[$i],0); if($col<=6){ // $daipai = getMin_first($daipaiage[$i], $SurPlusCapactity, $SurPluseeeeStock, $SurPlusHsgStock); $daipai = getMin_first($daipaiage[$i], $SurPlusCapactity, $SurPluseeeeStock); }else{ $daipai = getMin_second($daipaiage[$i], $SurPlusCapactity); } $yipaiage[$i] = $daipai; $SurPlusDaipai = max($daipaiage[$i] - $yipaiage[$i],0);$daipaiage[$i] = $SurPlusDaipai; } $dataA[]=[$i,$daipaiage[$i],$cust_pn, $project,$module,$eeee,$knk, $color_code,$daipaiage[$i],$SurPlusCapactity,$SurPluseeeeStock,$yipaiage[$i],$SurPlusDaipai,$days ,"age"]; if($daipai>0){ // 插入openpo_plan(单条插入修正) // $dataA[]=[$daipaiage[$i],$cust_pn, $project,$module,$eeee,$knk, $color_code,$daipaiage[$i],$SurPlusCapactity,$SurPluseeeeStock,$yipaiage[$i],$SurPlusDaipai,$days ,"age"]; $values = [ $project, $module,$stage, $pc_type, $cust_pn, $knk, $color_code, $color_option, $eeee, $daipai, $days,"AGE", $mo_date,$week, $date ]; $data['project']=$project; $data['module']=$module; $data['stage']=$stage; $data['pc_type']=$pc_type; $data['cust_pn']=$cust_pn; $data['knk']=$knk; $data['color_code']=$color_code; $data['color_option']=$color_option; $data['eeee']=$eeee; $data['qty']=$daipai; $data['days']=$days; $data['agep0']="AGE"; $data['mo_date']=$mo_date; $data['week']=$week; $data['create_time']=$date; $types = ''; // $params = []; foreach ($values as $value) { if (is_int($value)) { $types .= 'i'; // 如果是整数类型 $params[] = &$value; } else { $types .= 's'; // 否则假定为字符串类型 $params[] = &$value; } } $placeholders = '(' . implode(',', array_fill(0, count($values), '?')) . ')'; $sqlb = "INSERT INTO `openpo_plan` ( `project`,`module`,`stage`,`pc_type`,`cust_pn`,`knk`, `color_code`,`color_option`,`eeee`,`qty`,`days`,`agep0`,`mo_date`,`week`,`create_time` ) values ".$placeholders; // 单条占位符 // echo json_encode($data,true); $stmt = $db->query($sqlb,$types,$data); if ($stmt) { $total++; // 累计成功条数 } } $i++; } } $db->beginTransaction(); $sql = "DELETE FROM openpo_9c81 where project='$project' and week='$week'"; $res = $db->query($sql); $data=[]; $sqla="select project,module,pc_type,cust_pn,knk,color_code,color_option,eeee,mo_date,days,sum(qty) as qty from `openpo_plan` where project='$project' and week='$week' GROUP BY project, module,pc_type,cust_pn,days"; $resa=$db->fetchAll($sqla); $i=0; foreach($resa as $row){ $project=$row['project']; $module=$row['module']; $pc_type=$row['pc_type']; $cust_pn=$row['cust_pn']; $knk=$row['knk']; $color_code=$row['color_code']; $color_option=$row['color_option']; $eeee=$row['eeee']; $mo_date=$row['mo_date']; $days=$row['days']; $qty=$row['qty']; $data[]=[ 'project' => $project, 'module' => $module, 'pc_type' => $pc_type, 'cust_pn' => $cust_pn, 'knk' => $knk, 'color_code' => $color_code, 'color_option' => $color_option, 'eeee' => $eeee, 'mo_date' => $mo_date, 'qty' => $qty, 'days' => $days, 'week' => $week, 'create_time' => $date ]; $i++; } if (!empty($data)) { // 生成插入语句的占位符字符串和值数组 $chunkSize = 100; $dataChunks = array_chunk($data, $chunkSize); // 循环执行插入操作 foreach ($dataChunks as $chunk) { $placeholders = []; $values = []; $types = ''; // 参数类型字符串 $params = []; // 绑定的参数值 foreach ($chunk as $row) { foreach ($row as $value) { if (is_int($value)) { $types .= 'i'; // 如果是整数类型 } else { $types .= 's'; // 否则假定为字符串类型 } } $placeholders[] = '(' . implode(',', array_fill(0, count($row), '?')) . ')'; $values = array_merge($values, array_values($row)); } $sql="INSERT INTO `openpo_9c81` (`project`,`module`,`pc_type`,`cust_pn`,`knk`,`color_code`,`color_option`,`eeee`,`mo_date`,`qty`,`days`,`week`,`create_time`) values " . implode(', ', $placeholders); $stmt = $db->prepare($sql); // 准备预处理语句 if($stmt){ $stmt->bind_param($types, ...$values); // 绑定参数 $stmt->execute(); // 执行插入操作 $stmt->close(); // 关闭预处理语句 } } } // 响应结果(修正消息和判断条件) $response = [ 'code' => $i > 0 ? 0 : -1, 'count' => $total, 'data' => $dataA, // 'sqlb' => $daipai, 'message' => $total > 0 ? "插入成功!" : "插入失败,先确认机种!" ]; $db->commit(); echo json_encode($response); ?> 增加遗传算法,退火算法
08-31
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值