|
|
|
@ -52,9 +52,20 @@ public class PODetailServiceImpl extends ServiceImpl<PODetailMapper, PODetail> i |
|
|
|
public void saveModel(PODetailVo model){ |
|
|
|
PODetail poDetail = new PODetail(); |
|
|
|
BeanUtils.copyProperties(model, poDetail); |
|
|
|
|
|
|
|
// 获取当前用户 |
|
|
|
SysUserEntity currentUser = (SysUserEntity) SecurityUtils.getSubject().getPrincipal(); |
|
|
|
String currentUserName = currentUser != null ? currentUser.getUsername() : "system"; |
|
|
|
Date currentTime = new Date(); |
|
|
|
|
|
|
|
if(model.getId() != null){ |
|
|
|
// 编辑保存:更新 c_edit(修改时间)和 c_end_planner(修改人) |
|
|
|
poDetail.setEdit(currentTime); |
|
|
|
poDetail.setEndPlanner(currentUserName); |
|
|
|
baseMapper.updateById(poDetail); |
|
|
|
} else { |
|
|
|
// 新增保存:设置 create_time(创建时间) |
|
|
|
poDetail.setCreateTime(currentTime); |
|
|
|
baseMapper.insert(poDetail); |
|
|
|
} |
|
|
|
} |
|
|
|
@ -101,6 +112,11 @@ public class PODetailServiceImpl extends ServiceImpl<PODetailMapper, PODetail> i |
|
|
|
return; |
|
|
|
} |
|
|
|
|
|
|
|
// 获取当前用户和时间 |
|
|
|
SysUserEntity currentUser = (SysUserEntity) SecurityUtils.getSubject().getPrincipal(); |
|
|
|
String currentUserName = currentUser != null ? currentUser.getUsername() : "system"; |
|
|
|
Date currentTime = new Date(); |
|
|
|
|
|
|
|
// 主表跟明细为1对1关系,所以主表跟明细一起更新 |
|
|
|
List<POHeader> poHeaders = new ArrayList<>(); |
|
|
|
poDetailVoList.forEach(model -> { |
|
|
|
@ -111,6 +127,10 @@ public class PODetailServiceImpl extends ServiceImpl<PODetailMapper, PODetail> i |
|
|
|
BeanUtils.copyProperties(model, poHeader); |
|
|
|
poHeader.setId(model.getPoHeaderId()); |
|
|
|
poHeaders.add(poHeader); |
|
|
|
|
|
|
|
// 设置 PODetail 的审计字段:c_edit(修改时间)和 c_end_planner(修改人) |
|
|
|
model.setEdit(currentTime); |
|
|
|
model.setEndPlanner(currentUserName); |
|
|
|
}); |
|
|
|
|
|
|
|
//更新主表 |
|
|
|
@ -224,16 +244,8 @@ public class PODetailServiceImpl extends ServiceImpl<PODetailMapper, PODetail> i |
|
|
|
throw new RuntimeException("保存 POHeader 失败,订单号: " + excelDTO.getPoNo()); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
// ========== 2. 检查是否重复 ========== |
|
|
|
String poNo = excelDTO.getPoNo(); |
|
|
|
|
|
|
|
// 检查数据库中是否已存在相同的订单号(使用订单号+站点判断) |
|
|
|
Integer existCount = baseMapper.countByOrderAndItem(poNo, site); |
|
|
|
if (existCount != null && existCount > 0) { |
|
|
|
duplicateItems.add("第" + rowNum + "行 - 订单号: " + poNo); |
|
|
|
continue; // 跳过重复数据,继续处理下一条 |
|
|
|
} |
|
|
|
|
|
|
|
// ========== 3. 生成 item_no(核心) ========== |
|
|
|
Integer maxItemNo = baseMapper.getMaxItemNo(poNo, site); |
|
|
|
|