需求:几年前的一个项目,由于当时设计的时候没有考虑到事物的控制,导致计划和工单数量出现异常(重复),一个计划包括多个工单;
代码参考
//直接上了项目当中的代码片段
public void fixOrderException() {
List<String> plancodes = planDao.getPlancode();//去除所有未开工的计划号
List<Plan> plansException = planDao.getPlansException();//取出重复的工单
Map<String,String> plancodeMap =new HashMap<String,String>();
for(Plan plan :plansException){
if(plancodeMap.get(plan.getPlancode()) != null ){
//把计划号放到map中,如果存在则删除
planDao.deleteplan(plan.getId());
}else{//如果不存在则添加到map中
plancodeMap.put(plan.getPlancode(), plan.getPlancode());
}
}
for (String plancode : plancodes) {
List<Order> ordersException = planDao.getOrdersException(plancode);
if(ordersException.size() >= 6){
Map<String,String> stationMap = new HashMap<String,String>();
for(Order order:ordersException){
String stationcode = order.getStationcode();
if(stationMap.get(stationcode) != null){
String id = order.getId() ;
planDao.deleteOrder(id);
}else{
stationMap.put(stationcode, stationcode);
}
}
}
}
}